1. 程式人生 > >css實現兩端對齊的3種方法

css實現兩端對齊的3種方法

說到兩端對齊,大家並不陌生,在word、powerpoint、outlook等介面導航處,其實都有一個兩端對齊(分散對齊)的按鈕,平時使用的也不多,我們更習慣與左對齊、居中對齊、右對齊的方式來對齊頁面的文字或模組。

響應式網頁設計出現以來,更多是使用百分比布自適應佈局,特別是在移動端,兩端對齊的方式顯得越來越重要。那麼,如何使用css實現兩端對齊,相信很多同學會文字對齊的text-align:justify,這是今天要講的其中一種方式,另外還有兩種更精彩的實現方式,請往下看~

下圖是需要實現的demo,取了寬度分別為320px、480px、640px下的截圖,也就是說再隨瀏覽器視窗寬度的調整,按鈕選單高度不變,寬度會按比例自動適應,且左右兩端對齊:

目錄(更新於20161028)

方法一:使用text-align:justify

感謝join同學提供的方案,使用該方案可以做到相容所有的瀏覽器,不過實現起來會比較複雜,而且帶有hack的味道

text-align:justify 屬性是全相容的,使用它實現兩端對齊,需要注意在模組之間新增[空格/換行符/製表符]才能起作用,同樣,實現文字對齊也是需要在字與字之間新增[空格/換行符/製表符]才能起作用

HTML:

複製程式碼
<p>模組內的元素之間為&nbsp;分隔,只支援webkit和Gecko核心瀏覽器</p>
<br />
<div class
="demo"><a class="link" href="#none">10元</a>&nbsp;<a class="link" href="#none">20元</a>&nbsp;<a class="link" href="#none">30元</a>&nbsp;<a class="link" href="#none">50元</a> </div> <br /> <p>模組內的元素之間為換行符</p> <br /> <div
class="demo"> <a class="link" href="#none">10元</a> <a class="link" href="#none">20元</a> <a class="link" href="#none">30元</a> <a class="link" href="#none">50元</a> </div> <br /> <p>模組內的元素之間為空格符</p> <br /> <div class="demo"> <a class="link" href="#none">10元</a> <a class="link" href="#none">20元</a> <a class="link" href="#none">30元</a> <a class="link" href="#none">50元</a> </div> <br /> <p>模組內的元素之間為無分隔符,justify不起作用</p> <br /> <div class="demo"><a class="link" href="#none">選項1</a><a class="link" href="#none">選項2</a><a class="link" href="#none">選項3</a><a class="link" href="#none">選項4</a></div> <br />
複製程式碼

CSS:

複製程式碼
*{margin:0;padding:0;}
/* 
 說明:
1.IE中要實現塊內單行兩端對齊需要使用其私有屬性text-align-last:justify配合,text-align-last 要生效,必須先定義text-align 為justify 2.line-height:0 解決標準瀏覽器容器底部多餘的空白
*/ .demo{ text-align:justify; text-align-last:justify; line-height:0; height:44px; } /* 說明: 模組使用[換行符]或[空格符]後,webkit瀏覽器中會引起最後一個模組有多餘空白,使用font-size:0可清除該空格 */ @media all and (-webkit-min-device-pixel-ratio:0){ .demo{ font-size:0; } } /* 說明: 1.text-align-last:justify 目前只有IE支援,標準瀏覽器需要使用 .demo:after 偽類模擬類似效果 2.opera瀏覽器需要新增 vertical-align:top 才能完全解決底部多餘的空白 */ .demo:after{ display:inline-block; overflow:hidden; width:100%; height:0; content:''; vertical-align:top; } .demo a{ width:20%; display:inline-block; height:44px; line-height:44px; text-align:center; border:1px solid #428cc8; color:#666; font-size:16px; margin-bottom:5px; border-radius:3px; background-color:#fefefe; background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee)); color:#666; text-decoration:none; }
複製程式碼

 測試地址:

方法二:使用justify-content:space-between

box-pack是css3的新屬性,依賴於display:box(舊版彈性佈局),受box-orient影響,box-pack決定了子標籤水平對齊的方式,可選值有start | end | center | justify。使用box-pack:justify來實現兩端對齊非常簡單,程式碼量也少。為了向前看齊,把display:flex(新版彈性佈局)也一起寫進去~

如果是做基於webkit核心的webapp開發和winphone IE10及以上,那麼一切都好辦~

HTML:

複製程式碼
<div class="demo">
    <a class="link" href="#none">10元</a>
    <a class="link" href="#none">20元</a>
    <a class="link" href="#none">30元</a>
    <a class="link" href="#none">50元</a>
</div>
複製程式碼

CSS:

複製程式碼
*{margin:0;padding:0;}
/*
 說明:
 display:box定義佈局為盒模型後,可使用盒模型下的box-pack:justify屬性
*/
.demo{
    display:-webkit-box;
    display:-webkit-flex;
    display:-ms-flexbox;
    display:flex;
    -webkit-box-pack:justify;
    -webkit-justify-content:space-between;
    -ms-flex-pack:justify;
    justify-content:space-between;
}

.demo a{
     width:20%;
     display:block;
     height:44px;
     line-height:44px;
     text-align:center;
     border:1px solid #428cc8;
     color:#666;
     font-size:16px;
     margin-bottom:5px;
     border-radius:3px;
     background-color:#fefefe;
     background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
     color:#666;
     text-decoration:none;
}
複製程式碼

測試地址:

 

方法三:使用column(多列布局)

column也是是css3的屬性,意思是多列布局,使用column來實現兩端對齊也十分簡單,只需要設定模組的個數跟column的列數一致即可,不過它的自動適應方式跟使用box-pack還有有點差別,並不是很標準,像列與列的間距暫無法定義為百分比。值得高興的是目前支援所有高階瀏覽器,對IE10的支援也良好,而IE9及以下版本不支援,webapp開發中,對於不需要相容winphone7手機(IE9)的需求來說,可以充分發揮column的強大作用~

HTML:

複製程式碼
<div class="demo">
    <a class="link" href="#none">10元</a>
    <a class="link" href="#none">20元</a>
    <a class="link" href="#none">30元</a>
    <a class="link" href="#none">50元</a>
</div>
複製程式碼

CSS:

複製程式碼
*{margin:0;padding:0;}
/* 
 說明:
 1.column-count定義了物件的列數,例子中有4個模組,那麼定義為4列
 2.column-gap定義了物件中列與列的間距,間距不能設定為百分比,顯得不夠靈活
*/
.demo{
     -webkit-column-count:4;-moz-column-count:4;column-count:4;
     -webkit-column-gap:20px;-moz-column-gap:20px;column-gap:20px; 
}

.demo a{
     display:block;
     height:44px;
     line-height:44px;
     text-align:center;
     border:1px solid #428cc8;
     color:#666;
     font-size:16px;
     margin-bottom:5px;
     border-radius:3px;
     background-color:#fefefe;
     background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefefe),color-stop(1,#eee));
     color:#666;
     text-decoration:none;
}
複製程式碼

測試地址:

相關推薦

css實現兩端3方法

說到兩端對齊,大家並不陌生,在word、powerpoint、outlook等介面導航處,其實都有一個兩端對齊(分散對齊)的按鈕,平時使用的也不多,我們更習慣與左對齊、居中對齊、右對齊的方式來對齊頁面的文字或模組。 響應式網頁設計出現以來,更多是使用百分比布自適應

css實現垂直居中的3方法

方法一 這個方法吧一些div的顯示方式設定為表格,因此我們可以使用表格的vertical-align property屬性 html: <div id="wrapper">         <div id="cel

CSS實現兩端

div{text-align: justify; } div:after{display: inline-block ; content: ''; padding-left: 100%; } div、lable、span等都可以實現。

css段落文字(中英文混雜)實現兩端

今天分享一個小技巧,是中英文兩端對齊,只是應對哪些變態的需求。一般情況下還是不推薦使用的,畢竟使用了幾句js。 案例如下: 混合使用漢字和英文的段落預設如下: 兩邊是不對齊的(一般情況下,我們對這種情況不做處理,除非需求或者設計非要我們實現兩端對齊)。 對齊之後如下: 實現思路 一般的兩端對齊是使用

css文字兩端

搜索 一個 中文 graph idt 元素 text lock 問題 最近在工作項目中接觸到Web界面設計的問題,要實現文字兩端對齊的效果。在網上搜索了一下,差不多都是用的都是類似的技巧: text-align:justify;text-justify:inter-ide

【】小技巧】CSS文字兩端

兩個 isp images inline clas 我們 寬度 filter pre 需求如下,紅框所在的文字有四個字的、三個字的、兩個字的,如果不兩端對齊可以選擇居中對齊,或者右對齊。但是如果要像下面這樣兩端對齊呢? 我相信以前很多人都這麽幹過:兩個字中間使用 來隔開達

css實現垂直居中的幾方法

定位 方法 cell 方式 middle ali ddl 顯示 內容 方法1、這個方法把一些 div 的顯示方式設置為表格,因此我們可以使用表格的 vertical-align 屬性。 #wrapper { //代表父元素 display: table; }

CSS實現垂直居中的5方法

logo cto 溢出 hover 元素垂直居中 OS num -o com 利用 CSS 來實現對象的垂直居中有許多不同的方法,比較難的是選擇那個正確的方法。我下面說明一下我看到的好的方法和怎麽來創建一個好的居中網站。 使用 CSS 實現垂直居中並不容易。有些方法在一些瀏

CSS實現垂直居中的幾方法

right lin 兼容 bar 實現 syntax info pro ems 垂直居中是布局中十分常見的效果之一,為實現良好的兼容性,PC端實現垂直居中的方法一般是通過絕對定位,table-cell,負邊距等方法。有了css3,針對移動端的垂直居中就更加多樣化。 方法1:

34 文本樣式 1 word-spacing單詞間距 letter-spacing 字母間距 2 text-align 文本方式 justify 兩端 3 text-indent 首行縮進

letter com 分享圖片 inf nbsp png 技術分享 方式 bubuko 1 2 3 34 文本樣式 1 word-spacing單詞間距 letter-spacing 字母間距 2 text-align 文本對齊方式 justify 兩端對齊 3

頑石系列:CSS實現垂直居中的五方法

如果 -c align 大於 lock shu 彈性 ext explorer 頑石系列:CSS實現垂直居中的五種方法 在開發過程中,我們可能沿用或者試探性地去使用某種方法實現元素居中,但是對各種居中方法的以及使用場景很不清晰。參考的內容鏈接大概如下: 行內元素:htt

單行中文如何實現兩端

text-align: justify可以實現英文的兩端對齊,但是它有兩個缺陷: 只對多行文字有效,並且多行文字的最後一行無效 IE瀏覽器下只對英文有效 對於問題1,可以用 text-align-last: justify 解決,我自己測試在I

JS實現隨機顏色的3方法與顏色格式的轉化

JS實現隨機顏色的3種方法與顏色格式的轉化   隨機顏色和顏色格式是我們在開發中經常要用到的一個小功能,網上相關的資料也很多,想著有必要總結一下自己的經驗。所以這篇文章主要介紹了JS實現隨機顏色的3種方法與顏色格式的轉化,需要的朋友可以參考借鑑,下面來一

UILabel如何實現兩端

UILabel似乎並沒有提供兩端對齊的方法,本人寫了一個UILabel的(Category); 引入標頭檔案#import <CoreText/CoreText.h> - (void)changeAlignmentRightAndLeft {

文字實現兩端

/*** ***/ .justify{ width: 120px; text-align: justify; } .justify:after{ content: ""; padding-left: 100%; display: inline-block; } /

利用float和margin實現兩端佈局

 實現效果如下圖: 這種佈局方式一般我們都會想到直接使用float浮動外加margin-right做右側留白,既實現多個小模組按順序排列, 超出一行又會自動換行,從而實現這個效果。但是,實現過程中會遇到一個問題就是最右邊的留白處理問題, 當然可以根據選擇每行會有多少個模組,設定:nth-.

css 文字兩端小技巧

在這裡有其實現思維的解釋:https://segmentfault.com/a/1190000011336392 我只在此根據自己在開發中實現程式碼做個總結 <div class='div'> 這裡是文字 </div> .div { width: 12

CSS——清除浮動的幾方法

什麼是清除浮動? 在非IE瀏覽器(如Firefox)下,當容器的高度為auto,且容器的內容中有浮動(float為left或right)的元素,在這種情況下,容器的高度不能自動伸長以適應內容的高度,使得內容溢位到容器外面而影響(甚至破壞)佈局的現象。這個現象叫浮

CSS圖片兩端,自適應列表佈局末行修復例項頁面

寫在前面 前端開發,圖片兩端對齊,是十分常見的,也是十分痛苦的,我試過好多方法,通過整理,認為下面還是比較靠譜的,在實踐中大家可以試試,歡迎一起學習,一起進步 HTML程式碼 HTML程式碼非常簡單,用的是DIV,裡面用的是SPAN標籤。沒有采用Ul li  標籤,是因為在實踐應用中總是出現好

CSS兩端

這本來是個在word裡面才有的概念,但人家就是要我們程式猿在網頁中實現。 在一般情況下,比如如下的程式碼: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Ty