css-关于盒模型与定位等相关属性

158 阅读5分钟

元素三大特性--继承性

继承性:子元素有默认继承父元素样式的特点(子承父业) 可以继承的常见属性(文字控制属性都可以继承)

以下也是一些常见有继承性的属性 color: red; font-style: italic; font-weight: 700; font-size: 30px; font-family: 隶书; text-align: center; text-indent: 2em; line-height: 100px; */

注意点:可以通过调试工具判断样式是否可以继承

p标签中不要嵌套divp、h等块级元素
a标签不能嵌套a标签

如果有浏览器的默认样式就无法继承 如 a标签 默认蓝色 h系列默认大小 --> div的标签高度不能继承 但宽度有类似的继承效果 因为div的特性 独占一行 --> 1648129370481.png

常见应用场景:

  1. 可以直接给ul设置 list-style:none 属性,从而去除列表默认的小圆点样式

  2. 直接给body标签设置统一的font-size,从而统一不同浏览器默认文字大小

好处:可以在一定程度上减少代码

继承失效的特殊情况

如果元素有浏览器默认样式,此时继承性依然存在,但是优先显示浏览器的默认样式

  1. a标签的color会继承失效

    其实color属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了

  2. h系列标签的font-size会继承失效

    其实font-size属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了

层叠性

特性:

  1. 给同一个标签设置不同的样式 → 此时样式会层叠叠加 → 会共同作用在标签上

  2. 给同一个标签设置相同的样式 → 此时样式会层叠覆盖 → 最终写在最后的样式会生效

注意点:

  1. 当样式冲突时,只有当选择器优先级相同时,才能通过层叠性判断结果
    <style>
        /* 最开始是白色 但是当下方有同样的样式修改 下面的会覆盖上面的属性 */
        .box{
            color: #fff;
        }
        .box{
            color: #ccc;
        }
        .box{
            color: red;
        }
        .box{
            color: aqua;
        }
    </style>

优先级

7、!important 最强外挂 优先级最高

1、继承性 <2、通配符选择器 <3、标签选择器 <4、类选择器 < 5、ID选择器 <!-- 6、行内样式 --<7、!important 最强外挂 优先级最高

只要是继承优先级都是最低的

权重叠加计算公式 在复合选择器中,

比较数字,行内样式的个数 ID选择器的个数 类选择器的个数 标签选择器的个数

第一级若都为0 第二级为有一行数字大就后面不对比 全相同就以层叠性计算

!important如果不是继承 则权重最高 天下第一

    <style>
        #box {
            color: orange;
        }

        .box {
            color: blue;
        }

        div {
            color: green !important;
        }

        body {
            color: red;
        }

        /* !important不要给继承的添加, 自己有样式无法继承父级样式 */
    </style>

盒子模型

➢ CSS 中规定每个盒子分别由:

内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域( margin)构成,这就是 盒子模型

盒子模型 边框

盒子模型 边框粗细:border-width;

边框样式:border-style

实线:solid 虚线:dashed 点线:dotted 边框颜色:border-color;

border-style: solid;实线

        border-style: dashed;虚线 
        border-style: dotted;点线 
        border-color: coral;边框颜色 
        border: 10px solid blue; 
        border: 1px solid #000; 
        连写方式 1border:➕数字➕样式➕颜色
                 2、快捷键 bd ➕回车 
        直接默认形式出来 

边框单方向设置➕连写方式 :

      div{
            /* 单方向加属性连写 下 */
            border-bottom: 1px solid red;
            /* 单方向加属性连写 上 */
            border-top: 1px solid red;
            /* 单方向加属性连写 左 */
            border-left: 1px solid red;
            /* 单方向加属性连写 右 */
            border-right: 1px solid red;
        }

widthheight 是盒子内容区域的大小

border的设置会把盒子撑大

盒子实际大小初级计算公式 : 盒子内容宽度➕左边框➕右边框等于实际宽度 高度同样

盒子模型 内边距

padding:代表内边距 取值1-4个值 上右下左 顺时针方向计算

         padding: 10px; 
      如果只想一个方位,那就padding➕方位再➕数字px 

如果子盒子没有设置宽度,此时宽度默认是父盒子的宽度 此时给子盒子设置左右的padding或者左右的border,此时不会撑大子盒子(块级元素)

盒子模型 自动内减

/* 清除标签默认 margin: 和padding 可以让盒子和顶部的间隙清除*/

/* css3盒子模型 属性名:box-sizing: 属性值:border-box; 自动内减 输入以下单词 那么宽高就是盒子实际大小

外边距 合并于折叠现象

垂直布局 的 块级元素,上下的margin会合并

只给其中一个盒子设置margin即可 margin:100px

互相嵌套 的 块级元素,子元素的 margin-top 会作用在父元素上

解决方法:

  1. 给父元素设置border-top 或者 padding-top(分隔父子元素的margin-top)

      /* 1、给父元素加内边距 */
    
  2. 给父元素设置overflow:hidden

     /* 2、直接给父元素设置解决塌陷现象  overflow: hidden; 溢出隐藏的意思*/
    
  3. 转换成行内块元素

     /* 3、加边框 border: 1px solid red; */
    
  4. 设置浮动

行内元素的margin和padding无效情况

  1. 水平方向的margin和padding布局中有效!
  2. 垂直方向的margin和padding布局中无效!

top 上 bottom下 left左 right 右

    margin(外边距)单方向设置方式
    margin-left:100px 让当前盒子水平往右移动
    margin-right:100px 让右边的盒子水平往右移动
    margin-top:100px  让当前盒子垂直往下移动
    margin-botton:100px 让下面的盒子垂直往下移动

结构伪类选择器

找到一个子元素 并且是li标签

first-child 表示第一个子元素的意思 如:li:first-child;

last-child 表示最后一个子元素的意思 last 表示找最后

nth-child(数字) 表示寻找第几个 括号里写那个数字 就是找第几个

如:li:nth-child(3) 最方便 想找那个写那个数字

li:nth-child(数字) 可以用这个 也可以nth-last-child(倒数数字)

标签:nth-of-type(数字) 表示只会找一个标签名的排序 中间有其他类标签名都不计算

    /* 找到偶数个li 如: 2 4 6 8 10*/
        /* li:nth-child(2n)
    /* 或者括号里填写 even也是一样效果 even偶数的简写 */
        /* li:nth-child(even)
    /* 找到奇数个li  括号里写 2n+1 或者2n-1 或者odd也是可以的*/
        /* li:nth-child(2n+1)
    /* 找到前五个li 括号里写-n+数字  找前多少个就写数字几 */
        li:nth-child(-n+5)
    找到第五个往后li 括号里写n+数字  找后多少个就写数字几 */
        li:nth-child(n+6)  
    /* nth-last-child(倒数数字)找倒数 */

     /* 让ul的第一个li里的 第三个a变红 */
      1  ul li:nth-child(1) a:nth-child(3){ color: aqua;  }
      2   ul li:first-child a:nth-child(4){color: brown;}
     /* 两种写法都可以 但第一种更方便 */

伪元素

单伪元素

::before代表父元素前面加内容 ::after 代表后面的内容

必加属性 content 才能生效 转化为块元素或行内元素 宽高才能生效

/* 伪元素必须添加content才能生效 里面可以不写文字只加引号‘’ */

标签名或类名::after{
		content: '';
          	display: block;

优点:项目中使用,直接给标签加类即可清除浮动

浮动

浮动的代码

属性名 :float 属性值 left 左浮动
属性名 float 属性值 right 右浮动

float: left; 左浮动 float: right; 右浮动 (浮动之后 行内元素可以设置宽高 但不能通过text-align:center或margin:0 auto 居中 但里面的文字可以)

书写网页导航步骤:

清除默认的margin和padding

找到ul,去除小圆点 list-style:none

找到li标签,设置浮动让li一行中显示

找到a标签,设置宽高 → a标签默认是行内元素,默认不能设置宽高??

方法一:给a标签设置 display : inline-block

方法二:给a标签设置 display : block

方法三:给a设置 float : left (浮动)

浮动导航

1、给父元素设置高度就可以清楚浮动带来的影响 缺点比较固定高度 2、在父元素的内容最后添加一个额外标签块元素 clear:both 清楚浮动影响

如:父元素最后 <div class="blue"></div>
			 css   .blue {
                 clear:both;
					}

3、单伪元素清除法

          类名::after{
	 {必须添加}content: ''; 
	{转化块元素}display: block;
 	            clear:both;}

4、双伪元素清除法 (也可以清除margin塌陷的现象)

     .clearfix::before  (清除margin外边距塌陷的现象)
     .clearfix::after{content: '';
         display: block;
      } (清除浮动 )
     .clearfix::afterclear:both;}

/* 以下两个作用是补充代码 让伪元素的内容看不到 消除 避免小众浏览器解析错误 */
            /* height: 0;
            visibility: hidden; */{隐藏}

清除浮动  (但浮动一多 在开发中多用 伪元素去使用)

直接给父元素设置 overflow : hidden 最方便

定位

定位属性名 position 水平方位 left(左)right(右)

垂直方位 top(上) botton(下) 数字➕px 设定定位方式 position➕偏移值 上下左右

静态定位 属性值 static

​ 静态定位就是之前标准流,不能通过方位属性进行移动

 position:static

相对定位 属性值 relative

​ 相对于自己原来位置进行移动 用于小范围的移动 无脱标

position:relative

绝对定位 属性值 absolute

​ 默认相对于浏览器可视区域进行移动 在页面中不占位置 → 已经脱标 相对 最近的有定位的祖先元素进行移动

position:absolute

子绝父相 (子元素:绝对定位 父元素:相对定位)

父元素是相对定位,则对网页布局影响最小

子绝父相水平居中 :先让子盒子往右移动父盒子的一半 left:50% 再让子盒子往左移动自己的一半:transform:translateX(-50%)

固定定位 属性值 fixed

​ 脱标 根据浏览器窗口固定位置 具备行内块元素 可以设宽高

position:fixed;

装饰

居中

vertical-align: middle;

顶对齐

vertical-align: top;

底部对齐

vertical-align: bottom;

vertical-align: (上中下) 让图片文字居中 基线对齐 浏览器默认把行内 行内块元素和图片当成文字处理

光标

属性名:cursor 属性值:

​ pointer{小手效果 提示用户可以点击}

​ text {工字型 提示用户可以选择文字}

​ move {十字光标 提示用户可以移动}

图片 盒子等 隐藏

    /* 占位隐藏  不显示但占位置 不常用*/
        /* visibility: hidden; */
        /* 常用 display: none; 不占位隐藏 */
        display: none;

/* 溢出隐藏 */
        /* overflow: hidden; */
        /* 溢出隐藏且显示滚动条 */
        /* overflow: scroll; */
        /* 根据是否溢出自动显示或隐藏滚动条 */

input:focus{
        /* 聚焦 focus
        失去焦点 blur 基本不用 */
        background-color: #ccc;
    }

/* 整体透明度 */
        **opacity: 0.5;**

透明度 遮罩

background-color:rgba(255, 0, 0, 0.5)

定位层级

z-index 必须配合定位使用 z-index默认数值为0 当层级都相同 谁得数值大 谁就在上面

画三角形

    /* padding: 10px; */
            /* solid实线 dashed虚线  dotted点线 */
            /* border-top: 30px solid orange; */
                   transparent 让边框透明

边框圆角

border-radius: ; 数字加px 或百分比

边框合并 :border-collapse: collapse;

背景图缩放

    /* 等比例缩放 若宽满足 高过高会有留白 */
            background-size: contain;
    /* 等比例缩放 直至覆盖盒子 若盒子比例不一致 会有部分图片显示不出 */
            background-size: cover;
    /* 图片大小 */
            background-size: 10px;
    /* 相对于盒子的宽高百分比 */
            background-size: 70%;

盒子阴影

x偏移 y偏移 模糊 面积 颜色

    box-shadow: 5px 5px 5px 5px skyblue inset;

(inset 内部阴影) 不加inset 即是外部阴影

过度

     鼠标悬停 过度让宽高变为 宽200600 过度时间 
	属性名 transition 数字➕秒 过度时长
            属性单个隔开用逗号, 或用all 代表所有属性
            a:hover{
           transition: width 2s, height 1s,background-color 1s ;
           transitionall 2s(秒)
           }