Bootstrap 4 select 样式
Bootstrap 4 select styling
在我的 Bootstrap v4 表单中,我增加了 form-control
元素的填充,但我注意到此填充未应用于 select
元素。
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
不幸的是,我无法构建 Bootstrap 的自定义版本,所以我必须通过应用纯 css.
来覆盖行为
我创建了一个 JSFiddle 来演示问题。
如何正确地将填充应用到 Bootstrap v4 表单中的 select
元素?
内边距应用正确,但您必须更改高度
select.form-control{
height:auto !important;
}
您尝试将填充应用于 Bootstrap 4 form-control
个元素的方式不正确。因为 Bootstrap 4 具有原生的 类 专门设计来满足您所有的间距需求。还因为像这样应用 css 黑客可能(而且经常)导致需要更多 css 黑客来解决由原始 css 黑客引起的问题的问题。
因此,请使用 p-*
和 m-*
类 为您的元素应用间距并避免不必要的修改。
有关 Bootstrap 4 个间距实用程序的更多信息:
https://getbootstrap.com/docs/4.0/utilities/spacing/
编辑:
要解决自定义 css 的问题,您需要添加以下规则:
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
这是完整的工作代码段(单击 "run code snippet" 并展开到全屏以进行并排比较):
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
</style>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
编辑 2:
更好的解决方案是使用 .custom-select
,因为普通的 select 本身就有问题。 custom-select
是专门为简化样式而设计的,因为普通的 select 有很多错误(对此无能为力)。
这里有一个带有自定义-select 的代码片段用于比较:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
.custom-select {
height: auto !important;
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
</style>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
<div class="form-group col-md-6">
<label for="inputState">custom-select:</label>
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Choose... (custom-select)</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
在 CSS select 上使用更多特异性或覆盖 Bootstrap 高度:
select.form-control:not([size]):not([multiple]) {
height: initial;
}
select 将与文本输入的高度相同(假设对所有输入应用相同的填充、边框等)。
在我的 Bootstrap v4 表单中,我增加了 form-control
元素的填充,但我注意到此填充未应用于 select
元素。
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/css/bootstrap.min.css" integrity="sha384-Zug+QiDoJOrZ5t4lssLdxGhVrurbmBWopoEl+M6BdEfwnCJZtKxi1KgxUyJq13dy" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.3/js/bootstrap.min.js" integrity="sha384-a5N7Y/aK3qNeh15eJKGWxsqtnX/wWdSZSKp+81YjTmS15nvnvxKHuzaWwXHDli+4" crossorigin="anonymous"></script>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
不幸的是,我无法构建 Bootstrap 的自定义版本,所以我必须通过应用纯 css.
来覆盖行为我创建了一个 JSFiddle 来演示问题。
如何正确地将填充应用到 Bootstrap v4 表单中的 select
元素?
内边距应用正确,但您必须更改高度
select.form-control{
height:auto !important;
}
您尝试将填充应用于 Bootstrap 4 form-control
个元素的方式不正确。因为 Bootstrap 4 具有原生的 类 专门设计来满足您所有的间距需求。还因为像这样应用 css 黑客可能(而且经常)导致需要更多 css 黑客来解决由原始 css 黑客引起的问题的问题。
因此,请使用 p-*
和 m-*
类 为您的元素应用间距并避免不必要的修改。
有关 Bootstrap 4 个间距实用程序的更多信息:
https://getbootstrap.com/docs/4.0/utilities/spacing/
编辑:
要解决自定义 css 的问题,您需要添加以下规则:
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
这是完整的工作代码段(单击 "run code snippet" 并展开到全屏以进行并排比较):
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
</style>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
编辑 2:
更好的解决方案是使用 .custom-select
,因为普通的 select 本身就有问题。 custom-select
是专门为简化样式而设计的,因为普通的 select 有很多错误(对此无能为力)。
这里有一个带有自定义-select 的代码片段用于比较:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<style>
.form-control {
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
select.form-control{
height: auto !important;
padding: .6rem .8rem calc(.6rem + 1px) .8rem !important;
}
.custom-select {
height: auto !important;
padding: .6rem .8rem !important;
border: 2px solid #ced4da !important;
transition: none !important;
}
</style>
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
<div class="form-group col-md-6">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Choose...</option>
<option>...</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
<div class="form-group col-md-6">
<label for="inputState">custom-select:</label>
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Choose... (custom-select)</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
<div class="form-group col-md-6">
<label for="inputEmail4">Test</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Choose... (normal input for comparison)">
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
</div>
</div>
在 CSS select 上使用更多特异性或覆盖 Bootstrap 高度:
select.form-control:not([size]):not([multiple]) {
height: initial;
}
select 将与文本输入的高度相同(假设对所有输入应用相同的填充、边框等)。