20230208----重返学习-一些常见的css选择器

89 阅读6分钟

day03学习

思考

关于列表布局

如果遇到类似于多个项目item样式差不多的,最好优先使用列表布局,如ul>liol>lidl>dt/dd这类,或者直接全部使用div进行flex布局。

布局结构

  • margin : margin-top,margin-right,margin-bottom,margin-left;
  • border : border-top,border-right,border-bottom,border-left;
  • padding : padding-top,padding-right,padding-bottom,padding-left;
  • width与height : 里面包含内容区,内容区包含多行行间元素(行内元素及行内块元素);

元素之间的间隙

元素之间的间隙实际上是源代码中换行符在浏览器中显示为换行符,而换行符在浏览器中会显示为空白字符。

  • 解决方式,在父级上设置font-size为0,之后在元素自身设置字体真正的font-size。

white-space文字是否换行

white-space用来设置更精确一点的元素内空格处理方式。

  • white-space: normal 默认值,表示浏览器以正常方式处理空格。

    • 文首的空格被忽略。若容器太窄,第一个单词溢出容器,然后在后面一个空格处换行。文本内部的换行符自动转成了空格。
  • white-space: nowrap ,不会因为超出容器宽度而发生换行。

    • 所有文本显示为一行,不会换行。
  • white-space: pre ,按照pre标签的方式处理。

    • 与原始文本完全一致,所有空格和换行符都保留了。
  • white-space: pre-wrap ,基本还是按照pre标签的方式处理,唯一区别是超出容器宽度时,会发生换行。

    • 文首的空格、内部的空格和换行符都保留了,超出容器的地方发生了折行。
  • white-space: pre-line ,意为保留换行符。除了换行符会原样输出,其他都与white-space:normal规则一致。

    • 除了文本内部的换行符没有转成空格,其他都与normal的处理规则一致。这对于诗歌类型的文本很有用。

overflow内容溢出内容区后如何处理

overflow是一个复合属性

  • overflow-x: 只控制x的超出情况
  • overflow-y: 只控制y的超出情况

overflow设置了元素溢出时所需的行为——即当元素的内容太大而无法适应它的块级格式化上下文时。

  • 设置给被超出的元素。

可以设置的值:

  • visible: 默认,内容不会被修剪,而是显示在元素的框外
  • hidden: 超出内容被修剪,修剪掉的内容不可见,并且没有滚动条
  • scroll: 超出内容被修剪,浏览器显示滚动条方便查看被修剪的内容
  • auto: 浏览器定夺,如果内容超出就生成滚动掉,否则不生成

visilibity是否隐藏

控制元素显示或者隐藏

  • hidden:控制元素隐藏

    • 保留原来的位置,其他元素的布局没有发生改变
    • 相当于此元素变透明
    • visibility属性是继承的,里边的子元素也全部都继承属性,并且隐藏了
    • 如果给子元素设置visible覆盖,那么子元素可以进行显示
  • visible: 让visibility: hidden隐藏的元素显示

opacity透明度

opacity指定一个元素的透明度

  • 当opacity作用在某一个元素上的时候,把这个元素和里边的内容当成一个整体看待 即使里边的元素没有继承opacity。它也和父级有一样的透明度

  • opacity的取值是 1-0

    • 1代表完全不透明
    • 0代表完全透明

css选择器

在style样式里,大括号前面的都叫选择器

基础选择器
通配符选择器
  • *{},表示所有的元素。
标签选择器
  • 标签名{},表示标签名对应的元素。
类选择器
  • .类名{},class中包含该类名的元素。
  • 与标签的关系是多对多。
  • 标签class属性中多个类名之间用空格隔开。
id选择器
  • #id名{},id属性为该id名的元素。
  • 具有唯一性,如果有同名id,那么仅会在第一个id时生效(css还是有可能两个同名id的样式都生效的,但js用来选择时就不行了,只能选到第一个)。
属性选择器
  • [属性名],如:[id],只要有id属性就能选中。
  • [属性名=“属性值”],如:[id=“fang”],只要有id属性就能选中。
复杂选择器
子代选择器
  • 父代>自己标识{}
后代选择器
  • 直系祖先 自己标识{}
下面相邻兄弟选择器
  • 前置兄弟+自己标识{}
通用兄弟选择器
  • 前置兄弟+自己标识{}
群组选择器

又叫逗号选择器或和选择器。

  • 选择器A,选择器B,选择器C{}
交集选择器

选择器A选择器B{}

伪类选择器
a标签相关
  • a:link 有href属性并且该href属性并没有被访问过。
  • a:hover 鼠标悬浮到元素上面时的状态,这个不只a标签可以用。
  • a:visited 链接访问过后的状态。
  • a:active 被激活状态。
其它常见伪类
  • div:hover 鼠标悬浮到元素上面时的状态。
  • input:focus 元素自身获取到焦点后的状态,此伪类仅适用于焦点元素本身。
CSS样式的优先级
  • 同一个选择器权重相同,下面的覆盖掉上面的,层叠性。

  • 不同选择器权重不同时,以权重高的为准。

    • 浏览器默认自带值<继承<通配符选择器*<标签选择器伪元素选择器<类选择器属性选择器伪类选择器<ID选择器<行内式<!important
继承性

继承是一种规则,它允许样式不仅应用于特定的html标签元素,而且应用于其后代元素。

简单说就是给父元素设置一些属性,子元素/后代也可以使用,这个我们称之为继承性。

并不是所有的属性都可以继承, 以color/font-/text-/line-开头的属性、元素可见性:visibility 。

常用类型

cursor设置光标的类型
  • 设置自定义图标。

    .class3{
      cursor: pointer;
    }
    
  • 引入第三方图标。

    .class3{
      cursor: url(./arrow.cur) 6 9, pointer;/* 这个arrow.cur是从网上找的,浏览器一般仅支持cur或svg。 */
    }
    
user-select元素内文本是否可选中
  • user-select元素内文本是否可选中

进阶参考

  1. 利用Css3样式属性Cursor来更换自定义个性化鼠标指针(光标)
  2. CSS样式优先级
  3. CSS 的空格处理