[note] CSS 盒模型|居中

内容概述

一. 盒子模型

理解盒子模型:4个基本属性

  • content

  • padding

  • border

  • margin

屏幕快照 2020-02-12 下午4.25.13.png

content 内容相关属性

  • width
    • min-width
    • max-width
  • height
    • min-height
    • max-height

padding 内边距相关属性

  • padding: 上右下左
  • padding:是padding-top、padding-right、padding-bottom、padding-left的简写属性
    • 按照顺时针方向设值:top、right、bottom、left
    • 如果缺少left, 那么left就使用right的值
    • 如果缺少bottom, 那么bottom就使用top的

margin 外边距相关属性

  • margin: 上右下左
  • margin:是margin-top、margin-right、margin-bottom、margin-left的简写属性
  • 上下margin的传递
    • margin-top传递(常见)
      如果块级元素的顶部线和父元素的顶部线重叠,那么这个块级元素的margin-top值会传递给父元素
    • margin-bottom传递(少见,一般都是设置top)
      如果块级元素的底部线和父元素的底部线重叠,并且父元素的高度是auto,那么这个块级元素的margin-bottom值会传递给父元素
    • 如何防止出现传递问题?
      • 给父元素设置padding-top\padding-bottom
      • 给父元素设置border
      • 触发BFC:
        • 1 设置overflow(设置为auto、hidden等都可,只要不是visible就可)
        • 2 浮动也可以触发
    • 建议
      margin一般是用来设置兄弟元素之间的间距
      padding一般是用来设置父子元素之间的间距
  • 上下margin的折叠
    • 垂直方向上相邻的2个margin(margin-top、margin-bottom)有可能会合并为1个margin,这种现象叫做collapse(折叠)
    • 水平方向上的margin(margin-left、margin-right)永远不会collapse
    • 折叠后最终值的计算规则:两个值进行比较,取较大的值
    • 如何防止margin collapse?
      • 只设置其中一个元素的margin
    • 块级元素折叠问题看似有点莫名其妙,实际上还是有实用之处的
      • 比如连续段落之间的margin,恰好需要这种折叠效果

border

  • border: border-width border-style border-color

    • 边框颜色、宽度、样式的编写顺序任意
    • border-top、border-right、border-bottom、border-left
    • border:统一设置4个方向的边框
  • 边框的形状可能是

    • 矩形、梯形、三角形等形状
    div {
      display: inline-block;
    }
    
    .box1 {
      width: 100px;
      height: 100px;
      background-color: #ffeaa7;
      border-top: 10px solid #fab1a0;
    }
    
    .box2 {
      width: 100px;
      height: 100px;
      background-color: #ffeaa7;
      border-top: 10px solid #fab1a0;
      border-left: 10px solid #6a89cc;
    }
    
    .box3 {
      border-top: 110px solid #fab1a0;
      border-left: 110px solid #6a89cc;
      width: 0;
      height: 0;
    }
    
屏幕快照 2020-02-12 下午3.40.28.png
  • 屏幕快照 2020-02-12 下午3.43.26.png
  • border实现其他效果

    • 比如三角效果

      .box1 {
        border-top: 100px solid #fab1a0;
        border-right: 100px solid #7bc4df;
        border-bottom: 100px solid #ffeaa7;
        border-left: 100px solid #8da5d8;
      }
      
      .box2 {
        border-top: 100px solid #fab1a0;
        border-left: 100px solid transparent;
        background-color: transparent;
        transform: rotate(45deg); 
      }
      
      .box3 {
        border-top: 100px solid #fab1a0;
        border-right: 100px solid transparent;
        border-bottom: 100px solid transparent;
        border-left: 100px solid transparent;
      }
      
      屏幕快照 2020-02-12 下午4.07.34.png
  • 第三种写法是我自己想的,不需要像第二种那样旋转,方便理解

CSS属性 - border-*-*-radius

  • border-*-*-radius
    • border---radius定义的是四分之一椭圆的半径
      • 第1个值是水平半径
      • 第2个值是垂直半径(如果不设置,就跟随水平半径的值)
    • 还可以设置百分比
      • 参考的是border-box的宽度
  • border-radius
  • border-radius大于或等于50%时,就会变成一个圆

行内级非替换元素的注意点

  • 以下属性对行内级非替换元素不起作用
    • width、height、margin-top、margin-bottom
  • 以下属性对行内级非替换元素的效果比较特殊
    • padding-top、padding-bottom、上下方向的border

二、盒模型的其他属性

CSS属性 - outline

  • outline表示元素的外轮廓
    • 不占用空间
    • 默认显示在border的外面
  • outline相关属性有
    • outline-width
    • outline-style:取值跟border的样式一样,比如solid、dotted等
    • outline-color
    • outline:outline-width、outline-style、outline-color的简写属性,跟border用法类似
  • 应用实例
    • 调试技巧:查看网站的布局
      • outline: 1px solid red !important,outline不占空间,不会影响原布局,border会占据空间,导致格式变化
    • 去除 a/input/textarea 元素的focus轮廓效果
      • outline: none

CSS属性 - box-shadow

  • box-shadow属性可以设置一个或者多个阴影
    每个阴影用<shadow>表示
    多个阴影之间用逗号,隔开,从前到后叠加

  • <shadow>的常见格式如下

    • <shadow> = inset? && <length>{2,4} && <color>?,&&表示可以不按顺序
    • 第1个<length>:水平方向的偏移,正数往右偏移
    • 第2个<length>:垂直方向的偏移,正数往下偏移
    • 第3个<length>:模糊半径(blur radius)
    • 第4个<length>:延伸距离
    • <color>:阴影的颜色,如果没有设置,就跟随color属性的颜色
    • inset:外框阴影变成内框阴影(很少用到)
  • 练习:

    • 实现以下效果:左右都要有阴影
    屏幕快照 2020-02-12 下午9.30.24.png
.shadow {
  margin: 50px auto;
  width: 300px;
  height: 400px;
  /* box-shadow: -10px 10px 5px, 10px 10px 10px; */
  box-shadow: 0 10px 10px 5px rgba(0, 0, 0, .2);
}
  • 方法一:(注释起来的)设置两个阴影

  • 方法二:box-shadow: 0 10px 10px 5px rgba(0, 0, 0, .2);

  • CSS属性 - text-shadow

    • 用法类似于box-shadow,用于给文字添加阴影效果
    • text-shadow同样适用于::first-line、::first-letter

CSS属性 - box-sizing

  • box-sizing用来设置盒子模型中宽高的行为

    • content-box:padding、border都布置在width、height外边(W3C标准盒子模型)
      • 元素的实际占用宽度 = border + padding + width
      • 元素的实际占用高度 = border + padding + height
    • border-box:padding、border都布置在width、height里边(IE8以下浏览器)
      • 元素的实际占用宽度 = width
      • 元素的实际占用高度 = height
    屏幕快照 2020-02-12 下午8.38.03.png

元素的水平居中显示

  • 在一些需求中,需要元素在父元素中水平居中显示(父元素一般都是块级元素、inline-block)
    • 行内级元素、inline-block元素
      水平居中:在父元素中设置 text-align: center
    • 块级元素
      水平居中:margin: 0 auto

实现元素靠左靠右

  • margin-left和margin-right的初始值为0,此时靠左
  • 将margin-left改为auto即为靠右

垂直居中

实现垂直居中父元素height必须是auto
https://www.w3.org/Style/Examples/007/center.zh_CN.html
可以用绝对定位实现

作业

  • 课堂代码
  • 作业一 - 商品列表 - 页码列表
  • 作业二: 考拉的导航右侧
1577180164959.png
  • 笔记补充完善

提问

表单:

  • input中的name和value的作用
    • name会在浏览器 - 提交给服务器作为key
    • value普通的input, button/radio/checkbox/option
  • form元素中的常见属性
    • action: 服务器地址(URL)
    • method: 请求方式(get/post)
    • target: 打开方式
    • enctype
    • accept-charset

元素的分类:

  • 是否可以在同一行显示
    • 块级元素(block level)
    • 行内级元素(inline-level)
  • 是否会被浏览器替换掉
    • 替换元素(replaced elements)
    • 非替换元素(non-replaced elements)
  • display属性常见的值:
    • block
    • inline
    • none
    • inline-block特点
      • 可以和其他内容在同一行显示
      • 设置宽度和高度

img/input/iframe -> 替换元素 ->没有说过是inline-block

  • 可以在同一行显示
  • 可以设置宽度和高度

inline-block

  • 可以在同一行显示
  • 可以设置宽度和高度
  • 没有设置宽度和高度, 宽度和高度由内容决定

min: 最小

max: 最大

block -> block - block

inline -> inline - inline

inline-block -> inline - block

触发BFC

  • BFC: block format context
  • 结界

如何触发BFC:

  • 浮动可以触发
  • 设置一个元素的overflow为非visible
    • hidden
    • auto
    • scroll

content

  • 宽度和高度

padding

margin

border

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