写H5的时候,希望两个元素在div中垂直居中,但是设置align-items:center无效,最终排查原因是引入三方css影响了align-items:center。
具体分析如下,想让搜索图标和input在div里水平居中:
布局如下:
<div class="search-manager-div"><van-icon name="search"></van-icon><input class="search-manager-input" placeholder="搜索基金经理" type="text"></input>
</div>
css如下:
.search-manager-div .search-manager-input {height: 40px;border: 0;outline: none;
}.search-manager-div {height: 46px;display: flex;/* 启用Flexbox布局 */justify-content: center;align-items: center;/* 垂直居中所有子元素 */gap: 10px;/* 子元素之间的间隔 */border-radius: 23px;border: 1px solid #EB3C3C;margin-top: 10px;margin-left: 10px;margin-right: 10px;margin-bottom: 10px;padding-top: 3px;padding-bottom: 3px;padding-left: 10px;padding-right: 10px;}
但是真实效果如下,发现搜索图标有效果,但是align-items:center在input标签中并没有起效:
通过Chrome的检查功能发现引入的三方css库对input标签设置了margin-bottom
属性导致:
于是修改.search-manager-input
如下:
.search-manager-div .search-manager-input {height: 40px;border: 0;outline: none;margin-bottom: 0px;//手动设置为0,覆盖三方库的css样式}