若是你的CSS代碼裏常常出現height和width屬性,說明你對寬度與高度理解的不夠深css
翻譯很爛,應該爲普通流,或者常規流.html
可是必定要注意,不一樣字體的空格是不同的,必定不要用
來作佈局,不要用這個來作對齊下面的div用了text-align:justify.兩邊對齊了
web
若是內聯元素在一行放不下,就自動換到下一行,就像水流同樣
剛纔的文字對齊方式,就是借用了文檔流的特色,讓span的after寬度設置爲100%沾滿一行,因此他不得不在第二行,第一行就只有姓名等文字,而後在用text-align:justfy;讓姓名平均沾滿一行
示例代碼:瀏覽器
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文字兩邊對齊</title> <style> .duiqi{ border: 1px solid red; } .duiqi>span{ display: inline-block; width: 5em;/*寬度爲5個字體大小,由於漢字是等寬等高的,因此佔五個字*/ text-align: justify;/*讓沒行字都平均*/ border:1px solid blue; font-size: 20px; line-height: 1.4; font-family: "Microsoft YaHei UI"; /*而後固定高度,並overflow: hidden;*/ height: 28px; overflow: hidden; } .duiqi>span::after{ /*多佔一行,讓上面一行的字平均分開*/ content: ''; display: inline-block; width: 100px; border: 1px solid red; } </style> </head> <body> <div class="duiqi"> <span>姓名</span><br> <span>聯繫方式</span> </div> </body>
例如:佈局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>inline-space-test</title> <style> span { border: 1px solid red; } ul{ padding: 0; } ul>li{ list-style: none; padding: 0; display: inline-block; border:1px solid blue; } </style> </head> <body> <!--全部inline和inline-block元素之間,無論有多少回車和空格或者tab,都只顯示一個空格--> <span>1</span> <span>2</span> 1 2 <ul> <li>ddi1</li> <li>ddi2</li> <li>ddi3</li> <li>ddi4</li> <li>ddi5</li> <li>ddi6</li> </ul> </body> </html>
解決方法:字體
float:left
;.clearfix
.clearfix::after{ content:''; display:black; clear:both; }
若是內聯元素在一行放不下,就自動換到下一行,就像水流同樣
剛纔的文字對齊方式,就是借用了文檔流的特色,讓span的after寬度設置爲100%沾滿一行,因此他不得不在第二行,第一行就只有姓名等文字,而後在用text-align:justfy;讓姓名平均沾滿一行
這就叫作文檔流flex
中間沒有空格的單詞或數字,看做是一個總體,不會從中間斷開(這符合外國人的閱讀習慣).
解決方法:ui
word-break:break-all;
一個屬性:white-space:nowrap;
div中全部inline元素一行顯示,超出部分不換行
[套路!]一行文本省略spa
div{ border:1px solid red; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
jsbin
[套路!]多行文本省略
谷歌搜索:css multiline ellipsis
搜索到的
https://css-tricks.com/
.line-clamp {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow:hidden
}
jsbin
webkit的css,手機,谷歌,opera都支持,只有火狐和ie不支持,
瀏覽器市場份額翻譯
不要寫死高度,好比吧line-height
寫成40px;div高寫成40px;
那麼只有一行文字能夠垂直居中,下面幾行將出現BUG
下面的方法不可取
[套路!]方法:
想讓div高度爲40px,那麼把line-height
寫成24px,上下padding爲8px就能夠了,這樣多行文本也能夠距離差很少,不會出現bug
margin合併出如今div裏面有div的狀況
div裏的高度有他內部文檔流中元素的高度的總和決定的.
文檔流以下:
float
,脫離,浮在上面,父元素div高度變小position:absolute
position:fixed
注意: position:relative
沒有脫離文檔流,若是再加上定位,只是相對於以前的位置定位,原來的地方還佔據位置
padding
寫成同樣,左右居中在子元素上用margin: 0 auto;
惟一能想到讓div高度肯定的狀況:好比高度和瀏覽器窗口同樣:height:100vh;
position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;
讓上下左右邊距都auto.即margin:auto;配合定寬定高..dad{ display:flex; justify-content:center; align-items:center; }
內聯元素的padding 和margin只會影響寬度,可是不會影響高度.
總結:
padding
border
會影響高度.margi
n有時會影響,有事不會影響,由於可能會合並