第三次学习Web的总结

一、CSS选择器

1.1 class选择器

css:.elem{ }
html:class=“elem”

注:
1、class选择器是可以复用的。
2、可以添加多个class样式。
3、多个样式的时候,样式的优先级根据css决定,而不是class属性中的顺序
4、标签+类的写法

  • 例子:div,p标签中都有class样式时,在.elem前加个p变成p.elem即可只让p标签显示相应样式。

1.2 ID选择器

css: #elem{ }
html :id=“elem”

  • 注意事项
  1. 在一个界面,ID值是唯一的。
  2. 命名规范:字母_-数字(命名的第一位不能是数字)
  3. 命名方式
    • 驼峰式:searchButtom(小驼峰:第二个单词首字母大写)
      searchButtom(大驼峰:两个单词首字母都大写)
    • 下划线式:search_small_buttom
    • 短线式:search_small_buttom

1.3 标签选择器

css: div{ }
html: < div >

使用场景:

  1. 去掉某些标签的默认样式时
  2. 复杂的选择器中,如层次选择器

1.4 群组选择器

css: div,p,span{ }

  • 可以通过逗号给多个不同的选择器添加统一的CSS

1.5 通配选择器

*{ }→div,ul,li,p…

  • 注:尽量避免使用通配选择器,因为会给所有的标签添加上样式
  • 使用场景:去掉所有的标签的默认样式时

1.6 层次选择器

  1. 后代:M N{ }

  • 在M的N标签添加CSS样式
  1. 父子:M>N{ }

  • 仅对M下一层N标签添加CSS样式
  1. 兄弟: M~N{ }

  • 当前M下的所有兄弟N标签
  1. 相邻: M+N{ }

  • 当前M下相邻的N标签(仅找下相邻的)

1.7 属性选择器

M[attr]{ }

  • *=:表示部分匹配即可使之改变样式
  • =:表示完全匹配才能使之改变样式
  • ^=:起始匹配(前面的字符属性符合)才能使之改变样式
  • $=:结束匹配(后面的字符属性符合)才能使之改变样式
  • [][][]:组合匹配都满足才能使之改变样式

1.8 伪类选择器

  • 伪类是 W3C 制定的一套选择器的特殊状态,通过伪类您可以设置元素的动态状态

M:伪类{ }

  1. :link 访问前的样式(只能添加给a标签)
  2. :visited 访问后的样式(只能添加给a标签)
  3. :hover 鼠标移入时的样式(可以添加给任意标签)
  4. :active 鼠标按下后的样式(可以添加给任意标签)

注:

  • 如果四个伪类都生效顺序为:L V H A
  • 一般网站都只设置a{ }      a:hover{ }

:after、:before 通过伪类方式给元素添加内容

  • content属性在after,before中输入内容

:checked、:disable、:focus都是针对表单元素的,当某个表单有上述属性该伪类对含有上述属性的表单生效

1.9 结构伪类选择器

:nth-of-type(n){ }

  • n为单一数字时指某一项
  • 2n代表2的倍数项
  • n代表全部
  1. ;first-of-type { } 选中第一个
  2. ;last-of-type { } 选中最后一个
  3. ;only-of-type { } 仅有一个标签才生效
  • []:nth-child(n) { }
    值的是[]类标签中第n个而非第n个标签

二、CSS优先级

2.1相同、内部、外部、单一样式优先级

相同样式优先级

当设置相同样式时,后面的优先级高,但不建议出现重复样式的情况

内部样式与外部样式

内部样式与外部样式优先级相同,如果都设置了相同的样式,那么后面引入方式优先级高

单一样式优先级

style行间> id > class > tag > * { } >继承

  • 注:
选择器权重
style行间1000
id100
class10
tag1

2.2 !important

! important(加在标签后面)

  • 提升样式优先级,非规范方式,不建议使用,无法提升继承的优先级

2.3 标签+类与单类

标签+类 > 单类

  • 例:div,box{ color:blue} > .box { color:red}
  • 两者都出现时会表达第一个样式

2.4 群组优先级

  • 群组优先级与单一选择器的优先级相同,靠后的优先级高

2.5 层次优先级

  1. 权重比较
    • ul, li, .box , p , input { } →1+1+10+1+1
    • .hello , span , #elem { }→ 10+1+100
  2. 约分比较
    • ul, li, .box , p , input { } → li , p , input { }
    • .hello , span , #elem { } → #elem

三、CSS盒子模型

3.1 盒子模型的组成

组成(由内到外):content(物品)→padding(填充物)→border(包装盒)→margin(盒子之间的距离)

  • content:内容区域 由width和height组成
  • padding:内边距(内填充)
    • 例:number:30px 直接添加数字
      盒子模型图:
      在这里插入图片描述
      padding的分类
      在这里插入图片描述
  • 只写一个值:30px(赋值顺序:上下左右)
  • 只写两个值:30px 40px(赋值顺序:上下,左右)
  • 写了四个值:30px 40px 50px 60px(赋值顺序:上,右,下,左)
  • 单一样式只能写一个值

margin的分类
在这里插入图片描述

  • 只写一个值:30px(赋值顺序:上下左右)
  • 只写两个值:30px 40px(赋值顺序:上下,左右)
  • 写了四个值:30px 40px 50px 60px(赋值顺序:上,右,下,左)

注:

  1. 背景颜色会填充到margin以内的区域(不包括margin);
  2. 文字会在content区域;
  3. padding不能出现负值,margin可以出现负值。

3.2 box-sizing

定义:CSS 中的 box-sizing 属性定义了 user agent 应该如何计算一个元素的总宽度和总高度。

  • content-box(默认值):width,height→content
  • border-box:width,height→content,padding,border
    使用场景:
  1. 不用再去计算某些值
  2. 解决一些百分比问题

3.3 盒子模型的一些问题

  1. margin叠加问题:出现在上下margin同时存在的时候,会取上下margin值较大的作为叠加的值
  • 解决方案:
    1. BFC规范
    2. 想办法只给一个元素添加间距(只留一个margin值)
  1. margin传递问题:出现在嵌套结构中,只是针对margin-top的问题
  • 解决方案:
    1.BFC规范
    2.给父容器加边框
    3. margin换成padding(加给父容器)

3.4 扩展

  1. margin自适应居中

margin-right:auto 右适应
margin-left:auto 左适应
margin:auto auto 居中适应

  • margin左右可以自适应,上下不行(后面会学)
  1. 不设置content的现象(width,height不设置的时候,对盒子的影响)
  • 当不设置时会自动计算容器大小并且自动填充

3.5 盒子练习

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=>, initial-scale=1.0">
    <title>Document</title>
     <style>
        .box1{ width:350px;height: 350px;border: 1px black dashed;padding: 27px;}
        .box2{ border:5px #d7effe solid;padding: 20px;}
        .box3{ background:#ffa0df;padding: 41px;}
        .box4{ border:1px white dashed;padding: 3px;}
        .box5{ border:1px white dashed;padding: 49px;}
        .bos6{ width:100px;height: 100px;background: #96ff38;border: #fcff00 5px solid;}
     </style>
</head>
<body>
    <div class="box1">
         <div class="box2">
            <div class="box3">
                <div class="box4">
                    <div class="box5">
                        <div class="box6"></div>
                    </div>
                </div>
            </div>
         </div>
    </div>
</body>
</html>

在这里插入图片描述

四、 标签分类

4.1 按类型分类

  1. block:块(div , p , ul , li , h1 , … )
    • 独占一行
    • 支持所有格式
    • 不写完的时候,跟父元素的宽相同
    • 所占区域是一个矩形
  2. inline:内联 (span , a , em , strong , img …)
    • 各个内联紧挨在一起
    • 有些样式不支持
      • 例如:width , heught , margin , padding 其中 “margin , padding ”属于分支样式不支持
    • 不写宽的时候,宽度有内容决定
    • 所占区域不一定为矩形(img是矩形)
    • 内联标签有空隙 原因:换行产生的
      • 解决方法:先在style 标签中加body{fant-size:0;}再在ID选择器里加上fant-sizd-6px
  3. inline-block:内联块(input , select …)
    • 连在一起,支持宽高
    • 标签之间也有空隙
      • 解决方法:先在style 标签中加body{fant-size:0;}再在ID选择器里加上fant-sizd-6px

4.2 按内容分类

  • Flow:流内容
  • Metadata:元数据
  • Sectioning:分区(article , aside , nav , section)
  • Heading:标题(h1 , h2 , h3 , h4 , h5 , h6 )
  • Phrasing:措辞(strong , em …)
  • Embedded:嵌入的(img , audio …)
  • Interactive:互动的(输入框 , 菜单 …)
    关系图

4.3 按显示分类

  • 替换元素:浏览器根据元素的标签和属性,来决定元素的具体显示内容。
    • 注:替换元素就是需要属性才能显示的内容
  • 非替换元素:将内容直接告诉浏览器,将其显示出来。

五、其他规范

5.1 显示框类型

display

  • 属性:
字符含义
block块状
none不占空间隐藏
visibility:hidden占空间隐藏
inline内联状
inline-block内联块状

5.1.1 二级菜单

实现原理:

  1. 使一级菜单的display改变为none
  2. 再将其添加:hover { display:block}的属性

例:

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
                ul{
                        width: 300px;
                        height: 300px;
                }
                .item ul {
                        display: none;
                }
                .item:hover ul{
                        display: block;
                }
        </style>
</head>
<body>
        <ul class="nav-1">
                <li class="item">一级标签
                        <ul class="nav-2">
                                <li>二级标签—1</li>
                                <li>二级标签—2</li>
                                <li>二级标签—3</li>
                        </ul>
                </li>
        </ul>
</body>
</html>

5.2 标签嵌套规范

  • 块可以嵌套内联
<div>
    <span></span>
    <a href="#"></a>
</div>
  • 块可以嵌套块
<div>
    <div></div>  
</div>

特殊错误案例

<p>
    <div></div>  
</p>
  • 内联不能嵌套块

错误案例

<span>
    <div></div>  
</span>

特殊案例(正确的)

<a href="#">
    <div></div>  
</a>

5.3 溢出隐藏

overflow

属性:

字符含义
visible(默认值)溢出格式完全显示
hidden将溢出格式的隐藏起来
scroll出现滚动条,但文字少的时候滚动条仍然不隐藏
auto出现滚动条,文字少的时候滚动条隐藏起来
  • overflow-x,overflow-y 针对两个轴分别设置

5.4 透明度与手势

opacity : 0 (透明)~1 (不透明) 0.5 (半透明)

注:

  1. 即便透明也是占空间的
  2. 所有的子内容跟着透明块而透明
  • 子内容透明解决方案:
    引入rgba(a,b,c,d)<用于背景色>
    a ,b ,c代表着颜色表示方法,代表透明度
  • 例:background-color:rgba(255,0,0,0)

cursor : 鼠标样式

  • default(默认)等等
  • 实现自定义的样式: 准备图片(格式为.cur , .ico)
  • 例:cursor:url(./img/xxx.ico),auto;

5.5 最大,最小宽高

min-width(相当于大于等于的范围) | max-width(相当于小于等于的范围)
min -height | max-height

% 单位:换算→以父容器的大小进行换算

六、 CSS样式的设置

6.1 CSS默认样式(例)

  • 没有默认样式的: div、span
  • 有默认样式的:
    body -> marign :8px
    h1 -> margin :上下 21.440px font-weight :bold
    p -> margin :上下 16px
    u l-> margin :上下 16px padding :左 40px 默认点:list-style:disc
    a -> text-decoration: underline;

6.2 CSS reset

简单的css reset

  1. *{ margin:0;padding:0;}
    优点:不用考虑哪些标签有默认的margin和padding
    缺点:稍微的影响性能
  • 可以单独提出来重置:例子:body,p,h1,ul{ margin:0;padding:0;}
  1. ul{ list-style:none;}
  2. a{ text-decoration: none; color:#999;}
  3. img{ dispaly:block}
  • 问题的现象:图片跟容器底部有一些空隙。
    内联元素的对齐方式是按照文字基线对齐的,而不是文字底线对齐的。
  • vertical-align:baseline; 基线对齐方式,默认值
  • img{ vertical-align:bottom;}解决方式是推荐的
  • 写具体页面的时候或一个布局效果的时候:
  1. 写结构
  2. css重置样式
  3. 写具体样式

6.3 float 流动

  • 文档流
    文档流是文档中可显示对象在排列时所占用的位置。
  • float特性
    加浮动的元素,会脱离文档流,会延迟父容器靠左或靠右排列,如果之前已经
    有浮动的元素,会挨着浮动的元素进行排列。
    float取值:left right none(默认)
  • float注意点:
  1. 只会影响后面的元素
  2. 内容默认提升半层 float 提升一层
  3. 默认款根据内容决定
  4. 换行排列(当父容器排列不下去时会折行)
  5. 主要给块元素添加,但也可以给内联元素添加

6.4 清除float浮动

  • 上下排列
    • clear 属性 表示清楚浮动 left , right , both(无论左右都清除)
    • 若清楚必须保证清楚同一方向浮动
  • 嵌套排列
    • 固定宽高:不推荐,不能把高度固定死,不适合做自适应的效果。
    • 父元素浮动:不推荐,因为父容器浮动也会影响到后面的元素。
    • overflow:hidden(BFC规范),如果有子元素想溢出,那么会受到影响。
    • display:inline-block(BFC规范),不推荐,父容器会影响到后面的元素。
    • 设置空标签:不推荐,会多添加一个标签。
    • after伪类:推荐,是空标签的加强版,目前各大公司的做法。
  • clear属性只会对块起作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值