CSS 最佳实践 + 套路(二) -- height width

文档流

文档内元素的流动方向

  • 内联元素 ==> 从左向右依次流动,若 width 不足,则换行
  • 块级元素 ==> 从上到下依次流动,每个块级元素独占一行

脱离文档流

将会影响其祖先元素(块级元素)的 height

脱离文档流的三种方式:

  • position: fixed 相对于窗口定位
  • position: absolute 相对于定位包含框定位(position: absolute; top: 100%;
  • float: 浮动,可以利用 .clearfix 类清除浮动

height 问题

  • div (块级元素)==> 由其内部文档流元素的 height 总和决定
  • span (内联元素) ==> spanheight 决定于具体的字体(建议行高 + 设计字体的设计师决定)。

建议行高

字体都有一个建议行高,每种字体的建议行高是不同的。以下面的 span 为例:

<span style= 'font-family: 字体A; font-size: 20px; line-height: 40px;'>字体hug</span>
<span style= 'font-family: 字体B; font-size: 20px; line-height: 40px;'>字体hug</span>
  • 两个 span 的字体不同,所以两个 spanheight 就不相同。
  • font-size: 20px; 指的是英文字母 h 的上部 英文字母 g 的下部的距离为 20px ,中文汉字会比 20px 偏小一些。

最佳实践

  1. line-height 设置的比 font-size 大一些,那么行内元素的 height 将会等于 line-height 的值

  2. 内联元素设置 widthheight 时,不要使用

    display: block;
    height: 
    line-height: 
    text-align: center;
    

    通过添加 padding 从而达到想要的 widthheight (添加 line-height 明确 height),并且宽度(max-width)自适应

    padding: 
    line-height: 
    

套路

设置一个 height40px (近似)的 div ,其内部包含内敛元素 span

<div style= 'line-height: 24px; border: 1px solid green; padding: 6px 0;'>
    <span style= 'font-size: 14px; border: 1px solid red;'>hug</span>
</div>

两个 span 两端对齐方法

text-align: justify ==> 定义行内内容(例如文字)如何相对它的块父 元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容 的对齐。文字向两侧对齐(必须是多行文本)

span{ 
  display: block;
  width:            // 设置宽度,从而让两端对齐
  line-height:    //设置行高和高度,固定下来
  height: 
  text-align: justify;  //设置两端对齐 
  overflow: hidden;  
}
span::after{   // 设置伪类,从而有第二行。
  content: '';
  display: inline-block;
  width: 100%;
}

注意:可以将 span 设置为 display: inline-block ,之后在第一个 span 后面加上 <br>

两端对齐

文字省略溢出

单行文本省略溢出
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
多行文本省略溢出(css multi line text ellipsis)
display: -webkit-box;
-webkit-line-clamp: 3; //控制行数
-webkit-box-orient: vertical;
overflow: hidden;

实现一个 1:1 的 div

border: 1px solid red;
padding-top: 100%;

margin 合并

一个 div 标签中有一个子标签 div ,如果父标签有以下属性,则子标签中的 margin(上下) 属性不会合并。

  • border:
  • padding:
  • overflow: hidden;( 不推荐 )

相关知识点

  1. 文字和单词、单词和单词都是以基线对齐。

  2. 内联元素的 paddingmarginborder 不会影响 height ,但是会影响 width

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355