亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

前端 - css如何實現(xiàn)圖標和文字的“絕對對齊”呢?
黃舟
黃舟 2017-04-17 14:18:50
0
22
5058

前端實現(xiàn)圖標和文字對齊有什么解決方法?我的“絕對對齊”的意思是不管是安卓設備和ios設備看著都是對齊的,最好也能實現(xiàn)pc上的對齊。

demo:https://jsfiddle.net/nzfbzxw6/

雖然我通過設置

vertical-align: -3%;

實現(xiàn)的對齊(在chrome上看著好好的),如果我要在手機設備上安卓,就要是另一個數(shù)值。
ios可能又要設個數(shù)值(而且不同的蘋果機型也不一樣)。

對這種問題有什么更好的解決方法嗎?

-------------------------- 一個調(diào)皮的分割線 ----------------------------------------

各位前輩的方法我都試了一下,發(fā)現(xiàn)在安卓手機上都不好使,圖片居中是沒有問題的,但是文字(尤其是小于12px下的)卻無法居中,這可能是安卓手機bug吧...

(第一個box盒子,第二個display:inline-block,第三個background center)

黃舟
黃舟

人生最曼妙的風景,竟是內(nèi)心的淡定與從容!

全部回覆(22)
PHPzhong

行動裝置(安卓裝置、ios裝置)圖示文字垂直居中對齊的最佳常用解決方案是採用彈性盒子佈局,可以快速有效實現(xiàn)子元素未知高度絕對垂直居中對齊。 PC端考慮到相容性的問題,一般不建議使用彈性盒子,依舊只能採用傳統(tǒng)方式(vertical-align: middle;或position定位)實現(xiàn)圖示文字對齊。

<!--html-->
<p class="close-btn">
    <i class="icon-close-hmc"></i>
    <p class="close-txt">
        關(guān)閉
    </p>
</p>
//css
<style type="text/css">
            * {
                padding: 0;
                margin: 0;
            }
            
            .close-btn {
                display: -webkit-box;
                display: box;
                display: -webkit-flex;
                display: flex;
                -webkit-box-align: center;
                box-align: center;
                -webkit-align-items: center;
                align-items: center;
                background-color: #00BB9C;
                width: 80px;
                height: 40px;
                margin: 30px auto;
                -webkit-border-radius: 6px;
                -moz-border-radius: 6px;
                border-radius: 6px;
            }
            
            .icon-close-hmc {
                display: block;
                background-position: center;
                background-repeat: no-repeat;
                background-size: contain;
                background-image: url("http://s1.mi.com/m/images/20151028/top-x.png");
                width: 16px;
                height: 16px;
                margin: 0 10px;
            }
            
            .close-txt {
                font-size: 16px;
                color: #FFFFFF;
            }
        </style>
大家講道理

我一般使用的方法:
(1)使用display:table,沒有什麼相容性問題,個人覺得還是比較好用的。

<p class="close-btn">
    <p class="img-responsive">
        <img src="http://s1.mi.com/m/images/20151028/top-x.png">
    </p>
    <p class="close">關(guān)閉</p>
</p>
    *{padding:0;margin:0;}
    .close-btn{background:red;color:#fff;height:45px;width:120px;border-radius:5px;text-align:center;display: table}
    .img-responsive , .close{display: table-cell;vertical-align: middle}

隨意改變close-btn的高度,也能夠居中。

(2)絕對定位

<p class="close-btn">
    <p class="img-responsive">
        <img src="http://s1.mi.com/m/images/20151028/top-x.png">
    </p>
    <p class="close">關(guān)閉</p>
</p>
    *{padding:0;margin:0;}
    .close-btn{background:red;color:#fff;height:45px;width:120px;border-radius:5px;text-align:center;position: relative}
    .img-responsive , .close{position: absolute; top:50%; transform: translate(0, -50%);}
    .close { margin-left: 30px}

也可以實現(xiàn)絕對的居中對齊。

巴扎黑

其實不管是line-height還是用position去定位,不管你display用的什麼,不同機型的顯示效果都會不一樣。

水平上的差距幾乎沒有,垂直方向上的效果會多種多樣。

遇到這種ui,我的做法是把圖片寫在::before裡,用margin去定位,這樣不管右側(cè)的文案是否絕對的垂直居中,但至少圖是相對文案去定位的,是和文案對齊的。

阿神

說下我自己常用的兩種辦法(我也一直沒什麼太好的辦法):
第一種:

//HTML 部分
<p class="close-btn">關(guān)閉</p>

//CSS 部分
.close-btn {
    color:#fff;
    height:45px;
    line-height: 45px;
    width:120px;
    border-radius:5px;
    text-align:center;
    background: url('http://s1.mi.com/m/images/20151028/top-x.png') red no-repeat 20px center;
    background-size: 20px 20px;
}

這種方法是直接把圖片設定為背景。 。然後背景居中。 。

第二種:
這種辦法比較粗暴。 。直接把圖片絕對定位,然後居中

// HTML 部分
<p class="close-btn">
    <img src="http://s1.mi.com/m/images/20151028/top-x.png" width="20px">
    關(guān)閉
</p>
// CSS 部分
.close-btn {
    position: relative;
    background:red;
    color:#fff;
    height:45px;
    line-height: 45px;
    width:120px;
    border-radius:5px;
    text-align:center;
}
img {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    margin: auto 20px;
}

不知道有沒有更好的辦法了。 。

Ty80

https://jsfiddle.net/lincenyi...

劉奇

規(guī)定好字號,及圖片大小,用相對定位 或 作為背景圖片,下面是相對定位:


    <p class="close-btn">
    <img src="http://s1.mi.com/m/images/20151028/top-x.png">
    <span class="text-close">
      關(guān)閉
    </span>
    </p>
* {
  padding:0;
  margin:0;
  font-size:14px;
}
.close-btn {
  background:red;
  color:#fff;
  height:45px;
  line-height:45px;
  width:120px;
  border-radius:5px;
  text-align:center;
 }
 img {
    height: 14px;
    position: relative;
    top: 2px;
    left: 0;
 }
左手右手慢動作

*{padding:0;margin:0;}
.close-btn{display:table; background:red;color:#fff;height:45px;line-height:45px ;width:120px;border-radius:5px;}
.close-btn >p{display: table-cell;vertical-align: middle;width: 40%; padding: 0 4px; }
.img-responsive{text-align: right; }
.img-responsive img{vertical-align: middle;width:18px;height:auto;}
.close-des{text- align: left}
以上是針對樓主的demo的css調(diào)整,佈局方面:

關(guān)閉

給關(guān)閉多加一個p標籤,這樣可以達到樓主想要的結(jié)果,不管外面怎變變,圖片和文字都是對齊的。

ps:如果要做兩個元素絕對對齊,可以優(yōu)先考慮display:table;(父級) display: table-cell;(子級),這兩個真可以算是最佳搭配,而且屢試不爽。 vertical-align: middle;只在display:inline;(行內(nèi)元素起作用)

伊謝爾倫

直接上flex佈局,用多了你會發(fā)現(xiàn)傳統(tǒng)的寫法沒有一個能比得上彈性盒子來得爽。

左手右手慢動作

除了上面說的各種方法外,我覺得最方便的還是乾脆用個 字符圖標 代替那個圖片嘛。方便的很!

迷茫

雷雷

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板