我有相同的css属性,但按钮和输入字段是不同的字段
.input-con {
position: relative;
}
.input-con>* {
line-height: 1;
display: inline-block;
vertical-align: middle;
padding: 10px;
border: 0;
background-color: #ddd;
color: #444;
outline: 0;
cursor: pointer;
font-size: 15px;
box-sizing: border-box;
}
<div class="input-con">
<input type="text" />
<button>Search</button>
</div>
笔 - https://codepen.io/digitalzoomstudio/pen/LOoVYK
如果不强制 height 属性,我怎样才能达到相同的高度?
答案 0 :(得分:3)
您可以使用弹性框,只需在父级上添加display:flex;
( input-con )
.input-con {
position: relative;
display:flex;
}
.input-con>* {
line-height: 1;
display: inline-block;
vertical-align: middle;
padding: 10px;
border: 0;
background-color: #ddd;
color: #444;
outline: 0;
cursor: pointer;
font-size: 15px;
box-sizing: border-box;
margin-right:2px;
}
<div class="input-con">
<input type="text" />
<button>Search</button>
</div>
答案 1 :(得分:2)
您认为高度存在差异的原因是 - 我认为 - 属于font
属性,其中包括font-weight
,font-size
和font-family
的简写。
如果您明确覆盖input
和button
的此属性,则高度将匹配。
.input-con {
position: relative;
}
.input-con>* {
line-height: 1;
display: inline-block;
vertical-align: middle;
padding: 10px;
border: 0;
background-color: #ddd;
color: #444;
outline: 0;
cursor: pointer;
font-size: 15px;
box-sizing: border-box;
}
input,
button {
font: 400 15px Arial !important;
}
<div class="input-con">
<input type="text" />
<button>Search</button>
</div>
根据评论更新
分别声明font-weight
,font-size
和font-family
是行不通的,因为这不会完全覆盖font
速记。
完整的速记是:
font: font-style font-variant font-weight font-size/line-height font-family;
仅当声明这些属性的每个时,才会覆盖font
属性。
font
包含font-variant
的三个单独属性(连字,大写和数字) - 似乎使用font-variant
就足够了。<强>演示强>
.input-con {
position: relative;
}
.input-con>* {
/* override all properties of the 'font' shorthand */
font-style: normal;
font-variant: normal;
font-weight: 400;
font-size: 18px;
line-height: normal;
font-family: Arial, sans-serif;
display: inline-block;
vertical-align: middle;
padding: 10px;
border: 0;
background-color: #ddd;
color: #444;
outline: 0;
cursor: pointer;
box-sizing: border-box;
}
<div class="input-con">
<input type="text" />
<button>Search</button>
</div>
答案 2 :(得分:1)
您添加了line-height: 1;
,这有所不同
.input-con {
position: relative;
}
.input-con>* {
/*line-height: 1;*/
display: inline-block;
vertical-align: middle;
padding: 10px;
border: 0;
background-color: #ddd;
color: #444;
outline: 0;
cursor: pointer;
font-size: 15px;
box-sizing: border-box;
}
<div class="input-con">
<input type="text" />
<button>Search</button>
<input type="text" />
</div>
答案 3 :(得分:0)
尝试这可能有帮助
.input-con {
position: relative;
}
.input-con{
position:relative;
>*{
vertical-align:middle;
padding: 10px;
border:0;
background-color: #ddd;
color: #444;
outline:0;
cursor:pointer;
font-size: 15px;
}
}
答案 4 :(得分:0)
答案 5 :(得分:0)
确实,Flexbox是可行的方式,但如果您对此感到好奇,那么CSS Tricks会有一篇好文章https://css-tricks.com/fighting-the-space-between-inline-block-elements/