【前端基础篇】CSS选择器 和 CSS属性

news2025/2/9 1:50:10

前言:CSS 简介

  1. CSS 概述

    • CSS ( Cascading Style Sheet ) 层叠样式表,用来修饰 HTML,使得效果更加多样化
    • CSS 在 HTML4.0 中引入,一般在开发过程中,会使用单独的 CSS 文件进行开发,然后将这个独立 CSS 文件引入到需要的 HTML 文件中
  2. 引入 CSS 的好处

    • 达到结构与样式的分离,后期维护更加方便;
    • 浏览器兼容性更好;
    • 代码更加简洁,一个CSS文件可以被多个html文件引用;
  3. CSS基础语法

    • CSS 规则主要由两个部分构成:选择符 和 声明 ( 一条或多条 )
    • 语法 选择符{ 属性 : 属性值 }

一、CSS 引入方式

  • 行内式 通过 style 属性在标签内嵌入

  • 内嵌式 通过 style 标签在 head 标签内嵌入

  • 链接式 通过 link 标签在 head 标签内引入外部独立的样式

  • 导入式 同内嵌式,不同的是在 style 标签内通过 @import 导入外部独立的样式

CSS 层叠性体现:匹配元素权值相同的前提下,多种引入方式样式冲突时,根据就近原则,离着元素近的引入方式样式覆盖离着元素远的引入样式

面试题:链接式与导入式的区别

  • link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;而@import属于CSS范畴,只能加载CSS;
  • link引用CSS时,在页面载入时同时加载;而@import需要页面网页完全载入以后加载。
  • link是XHTML标签,无兼容问题;而@import是在CSS2.1提出的,低版本的浏览器不支持。
  • link支持使用 JavaScript 控制DOM去改变样式;而@import不支持。
  • @import可以在CSS文件中再次引入其他样式表;而link不支持。

二、CSS 选择器

2.1 基本选择器

  • 全局选择器 *

  • 标签选择器 tagname

  • class 选择器 .classname

    • 同一个元素可以设置多个类名,空格隔开、
    • 同一个类名可以设置给多个元素
  • id 选择器 #idname

    • 每个元素的 id 是唯一的

2.2 关系选择器

  • 子代选择器 E > F
  • 后代选择器 E F
  • 相邻兄弟选择器 E + F
  • 通用兄弟选择器 E ~ F
  • 并集选择器 E,F,…,N
  • 交集选择器 elment#id.classname1,classname2,...,classnameN

2.3 动态伪类选择器

  • :link 初始状态
  • :visited 访问后状态
  • :hover 鼠标悬停状态
  • :active 激活状态

2.4 选择器优先级

  • 权值的计算规则

    权值代表一个选择器的重要程度,权值越高,选择器的优先级就越高。

在这里插入图片描述

  • 复杂选择器判断优先级

​ 选中元素,分别判断 id、class、element 选择器的数量

​ 未选中元素,就近原则,距离相同 ,按照 id、class、element 选择器的数量进行判断

层叠性体现:优先级高的覆盖优先级低的样式

三、文字相关样式

  1. 字体类型 font-family

    注:可以设置多个字体,使用逗号隔开;如果浏览器不支持第一个字体,则会尝试下一个。

  2. 字体大小 font-size: 关键字 | 固定值 | 百分比 ( 基于父元素 )

  3. 字体粗细 font-weight: 关键字 | 100-900之间的整百数

  4. 字体样式 font-style: normal | italic | oblique

    注:italic 和 oblique 都是向右倾斜的文字, 但区别在于 italic 是指斜体字,而 oblique 是倾斜的文字,对于没有斜体的字体应该使用 oblique 属性值来实现倾斜的文字效果

  5. font 简写属性

    即在一个声明中设置所有字体属性,设置的属性顺序如下:

    font:"font-style font-weight font-size/line-height font-family"
    

    注:font-size 和 font-family 的值是必需的; line - height 属性设置行与行之间的空间

  6. CSS3 @font-face 规则

    使用 CSS3,网页设计师可以使用他/她喜欢的任何字体,在新的 @font-face 规则中,您必须首先定义字体的名称(比如 myFirstFont),然后指向该字体文件。详见:https://www.runoob.com/css3/css3-fonts.html

    字体定义

    @font-face{
        font-family: myFirstFont;
        src: url('Sansation_Light.ttf'),
             url('Sansation_Light.eot'); /* IE9 */
    }
    

    字体使用

    div{
    	font-family: myFirstFont;
    }
    

    注:Internet Explorer 9 只支持 .eot 类型的字体, Firefox, Chrome, Safari, 和 Opera 支持 .ttf 与.otf 两种类型字体。 Internet Explorer 8 及更早IE版本不支持@font-face 规则。

四、文本相关样式

  1. 文本颜色 color: 颜色名称 | 十六进制 | RGB | RGBA | HSL | HSLA

  2. 文本装饰 text-decoration: underline | overline | line-through | none;

    /*关键值*/
    text-decoration: none;                     /*没有文本装饰*/
    text-decoration: underline red;            /*红色下划线*/
    text-decoration: underline wavy red;       /*红色波浪形下划线*/
    
    /*全局值*/
    text-decoration: inherit;
    text-decoration: initial;
    text-decoration: unset;
    
    /*虚线dotted 与 波浪线wavy 注意:在Edge/Internet 浏览器中没有效果*/
    text-decoration: underline overline dotted red; /*红色点状上划线和下划线*/
    text-decoration: underline overline wavy blue;  /*蓝色波浪形上划线和下划线*/
    

    注:text-decoration 属性是以下三种属性的简写

    • 线条线型 text-decoration-line: none|underline|overline|line-through
    • 线条颜色 text-decoration-color
    • 线条种类 text-decoration-style: solid|double|dotted|dashed|wavy(波浪)
  3. 文本大小写 text-transform: capitalize (单词首字母大写) | uppercase (字母大写) | lowercase (字母小写)

  4. 段落首行缩进 text-indent: 固定值 | 百分比

  5. 文本水平对齐 text-align: left | center | right | justify (分散对齐)

    注:属性 text-justify 用域当 text-align 设置为 justify 时指定分散对齐的方式,属性值如下

    描述
    auto浏览器决定齐行算法。
    none禁用齐行。
    inter-word增加/减少单词间的间隔。
    inter-ideograph用表意文本来排齐内容。
    inter-cluster只对不包含内部单词间隔的内容(比如亚洲语系)进行排齐。
    distribute类似报纸版面,除了在东亚语系中最后一行是不齐行的。
    kashida通过拉伸字符来排齐内容。
  6. 行高 line-height: 固定(单位)值 | 百分比 (%) | number (倍数)

  7. 字,词间距

    letter-spacing 设置字符间距

    word-spacing 设置单词间距

  8. ( 盒子 ) 文本的方向 / 书写方向 direction: ltr (默认) | rtl

  9. 元素的垂直对齐方式 vertical-align: 关键字 | 固定值 | 百分比

    注:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。允许指定负长度值和百分比值。这会使元素降低而不是升高。在表单元格中,这个属性会设置单元格框中的单元格内容的对齐方式。

  10. 元素内留白处理 white-space 属性值如下

    描述
    normal默认。空白会被浏览器忽略。
    pre空白会被浏览器保留。其行为方式类似 HTML 中的 pre 标签。
    nowrap文本不会换行,文本会在在同一行上继续,直到遇到 br 标签为止。
    pre-wrap保留空白符序列,但是正常地进行换行。
    pre-line合并空白符序列,但是保留换行符。
  11. 文本溢出元素处理 text-overflow: clip (修剪) | ellipsis (省略号代替被修剪的文本) | 其它字符串代替修剪文本

    单行文本溢出 … 代替处理方案

    p {
    	width:300px; /*容器的宽度*/
    	white-space:nowrap; /*强制不换行*/
    	text-overflow:ellipsis; /*省略号代替被修剪的文本*/
    	overflow:hidden;  /*内容溢出容器部分隐藏*/
    }
    

五、列表相关样式

  1. 项目符号类型 list-style-type

    属性值不完全统计,详见 https://www.runoob.com/cssref/pr-list-style-type.html

  2. 项目符号位置 list-style-position: inside | outside

在这里插入图片描述

  1. 图片类型项目符号 list-style-image:url(‘图片路径’)

  2. 列表属性简写 list-style: list-style-type, list-style-position, list-style-image.

    注:可以不设置其中的某个值,如 “list-style:circle inside;” ,未被设置的属性会使用其默认值。

六、表格相关样式

border-collapse 属性设置表格的边框是否被合并为一个单一的边框,属性值如下

说明
collapse如果可能,边框会合并为一个单一的边框。会忽略 border-spacing 和 empty-cells 属性
separate默认值。边框会被分开。不会忽略 border-spacing 和 empty-cells 属性

七、背景相关样式

  1. 背景颜色 background-color: 颜色值 | transparent ( 透明 )

    合法颜色值:https://www.runoob.com/cssref/css-colors-legal.html

  2. 背景图片 background-image 属性值如下

    说明
    url(‘URL’)图像的URL
    none无图像背景会显示。这是默认
    linear-gradient()创建一个线性渐变的 “图像”(从上到下)
    radial-gradient()用径向渐变创建 “图像”。 (center to edges)

    注:1. 元素的背景是元素的总大小,包括填充和边界(但不包括边距)

    ​ 2. 多张背景图片,请使用逗号隔开

  3. 背景图片平铺方式 background-repeat: repeat (默认) | repeat-x | repeat-y | no-repeat

  4. 背景图片起始位置设置 background-position: 关键字 () | 百分比 <x% y%> | 固定 (单位) 值 <xpos ypos>

    注:1. 关键字有left top、left、left bottom、right top、right 、right bottom、top、center、bottom

    ​ 2. 百分比 和 固定值 中第一个值是水平位置值,第二个值是垂直位置值

  5. 背景图片大小 background-size: 固定值(单位) | 百分比 (相对于背景定位区域) | cover | contain

    注:1. 固定值 和 百分比,第一个值为宽度,第二个值为高度。如果只有一个值,第二个值为 auto(自动)

    ​ 2. cover 保持图像纵横比并将图像缩放成将完全覆盖背景定位区域的最小大小

    ​ 3. contain 保持图像的纵横比并将图像缩放成将适合背景定位区域的最大大小

  6. 背景图片是否随对象内容滚动 background-attachment 属性值如下

    描述
    scroll背景图片随着页面的滚动而滚动,这是默认的。
    fixed背景图片不会随着页面的滚动而滚动。
    local背景图片会随着元素内容的滚动而滚动。
  7. 背景(颜色、图片)裁剪显示区域 background-clip: border-box|padding-box|content-box

  8. 背景原点 background-origin: padding-box|border-box|content-box

  9. 背景简写 background:bg-color bg-image position/bg-size bg-repeat bg-origin bg-clip bg-attachment

  10. 雪碧图介绍与应用

    • 什么是雪碧图?

      雪碧图也叫CSS精灵, 是一种CSS图像合成技术,就是将许多小图标合并在一张背景透明的图片上,使用background-position和background-size来控制图片显示的区域

    • 为什么要使用雪碧图?

      网站开发90%会用到小图标, 多小图标调用显示是前端开发常见的问题,如果每个小图标都单独调用一张图片, 即意味着每个小图标的显示都产生一个HTTP请求;每个请求都需要一定的性能开销,主要在请求、以及响应阶段。为了减少http请求数量,加速网页内容显示,很多网站的导航栏图标、登录框图片等,使用的并不是标签,而是CSS Sprite雪碧图。

    • 使用雪碧图的优缺点

      优点:

      • 通过将多张图片合并成一张,可以有效减少 HTTP 请求,提高页面加载的性能
      • 将多张图片合并到一张图片中,可以减小图片的总大小
      • 整理起来更为方便,同一个按钮不同状态的图片也不需要一个个切割出来并个别命名
      • 只需要修改一张或少张图片的颜色或样式来改变整个网页的风格
      • 只需对一张集合的图片命名,不需要对每一个小图片进行命名,从而提高了网页制作效率

      缺点:

      • 合成起来麻烦
      • 适应性差
      • 可维护性差
      • 小图标在高清屏幕上可能会失真,另外频繁使用定位会占用比较多的CPU
    • 应用场景

      • 静态图片,不随用户信息的变化而变化
      • 小图片,图片容量比较小
      • 加载数量比较大
    • PS or PW 工具的基本使用(能够自己进行切图处理)
       在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity编辑器扩展-第二集-按钮排序/分组/放入右键菜单

第一集链接&#xff1a;Unity编辑器扩展-第一集-在菜单栏加入自己的按钮_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.按钮排序 变成 2.按钮分组 仔细看&#xff0c;有个灰色的杠杠 3.放入右键菜单 4.皮一下 二、按钮排序具体流程 第一集讲&#xff0c;如果想放入…

Java自定义泛型类、泛型接口、泛型方法以及 泛型擦除的细节

体会&#xff1a;使用泛型的主要优点是能够在编译时而不是在运行时检测错误。 /*** 自定义泛型类*/ public class Order<T> {String orderName;int orderId;//类的内部结构就可以使用类的泛型T orderT;public Order(){//编译不通过 // T[] arr new T[10];//编译…

Unity基础3——Resources资源动态加载

一、特殊文件夹 &#xff08;一&#xff09;工程路径获取 // 注意 该方式 获取到的路径 一般情况下 只在 编辑模式下使用 // 我们不会在实际发布游戏后 还使用该路径 // 游戏发布过后 该路径就不存在了 print(Application.dataPath);&#xff08;二&#xff09;Resources 资…

如何自动生成正交法测试用例?

目录 引言 正交法实验 自动生成正交用例 引言 正交法测试用例是一种高效且可靠的方法&#xff0c;能够最大限度地减少测试工作量&#xff0c;同时保证覆盖所有可能的组合情况。通过了解如何优化这些测试用例的生成过程&#xff0c;可以提高产品的质量&#xff0c;降低故障率…

机器人视觉梳理(上)

原创 | 文BFT机器人 01 机器人视觉的概念 在智能制造过程中&#xff0c;通过传统的编程来执行某一特定动作的机器人&#xff08;机械手、机械手臂、机械臂等&#xff0c;未作特殊说明时&#xff0c;不作严格区分&#xff0c;统一称为机器人&#xff09;&#xff0c;将难以满足制…

【CV大模型SAM(Segment-Anything)】如何保存分割后的对象mask?并提取mask对应的图片区域?

上一篇文章【CV大模型SAM&#xff08;Segment-Anything&#xff09;】真是太强大了&#xff0c;分割一切的SAM大模型使用方法:可通过不同的提示得到想要的分割目标中详细介绍了大模型SAM&#xff08;Segment-Anything&#xff09;的不同使用方法&#xff0c;后面有很多小伙伴给…

【JVM 监控工具】使用JConsole监控进程、线程、内存、cpu、类情况

文章目录 前言一、如何启动JConsole二、如何设置JAVA程序运行时可以被JConsolse连接分析三、JConsole如何连接远程机器的JAVA程序&#xff08;举例说明&#xff09;四、性能分析概述内存线程类VM摘要MBean 五、使用Jconsole监控某方法的性能总结 前言 Jconsole是JDK自带的监控…

网络工程师必备,华为/思科/华三交换机命令对比

本期对华为/思科/华三交换机配置命令对比,来看下他们的区别在哪里&#xff0c;这里对命令做了个汇总&#xff0c;平时对命令不熟的朋友这次可以看下。 另外我们来看下华为与H3C的命令情况&#xff0c;方便大家进行对比。 一、华为交换机基础配置命令 1、创建vlan&#xff1a; …

Unity基础1——3D数学

一、Mathf &#xff08;一&#xff09;Mathf 和 Math ​ Math 是 C# 中封装好的用于数学计算的工具类 —— 位于 System 命名空间中 ​ Mathf 是 Unity 中封装好的用于数学计算的工具结构体 —— 位于 UnityEngine 命名空间中 ​ 他们都是提供来用于进行数学相关计算的 ​…

机器学习 day18(用Tensorflow搭建一个神经网络)

之前搭建神经网络的方法 先初始化输入数据X&#xff0c;创建layer 1并计算激活值a1&#xff0c;创建layer 2并计算激活值a2&#xff0c;这是前向传播代码的显式形式。 另一种简单些的创建神经网络的方法 创建layer 1和layer 2与前一种方法相同&#xff0c;但我们不需要手动…

JUC并发编程学习笔记

1&#xff1a;回顾多线程 进程和线程是什么 进程是操作系统分配资源的最小单元&#xff0c;而线程是cpu调度的最小单元。 java默认有几个线程 2个,main线程和GC线程&#xff08;GC垃圾回收机制&#xff09; java可以开启线程么 不能 并发和并行 并发,多线程操作同一个资源,cp…

纯电驱动车辆动力总成的优化与比较研究

摘要&#xff1a; 不同动力总成拓扑结构的对比分析 前言 纯电驱动的电动汽车因为集成有大容量电池组&#xff0c;可以存储取自公共电网的电能&#xff0c;用来驱动车辆的行驶。相比于传统的混合动力汽车&#xff0c;具有更加优越的节能减排效果和潜力。因此&#xff0c;近年来…

cpp文件编译过程 makefile cmake

这里写目录标题 argc argv参数头文件编译过程静态链接&#xff0c;动态链接&#xff0c;静态库&#xff0c;动态库 -shared制作使用动态库libxxx。so冲突 静态库预处理编译汇编链接目录选项-Idir 大写Iinclude<> 与 " "-I -I- 与 -I- -I ld/objdump/objcopy 选…

内网渗透—隧道搭建Ngrok与Frp内网穿透

这里写目录标题 1. 前言1.1. 隧道技术介绍1.2. 代理技术介绍1.2.1. 正向代理1.2.2. 反向代理1.2.3. 透明代理1.2.4. 正向代理与透明代理区别 2. 内网穿透2.1. Ngrok2.1.1. 访问Ngrok2.1.2. 代理设置2.1.2.1. 开通代理2.1.2.2. 配置隧道2.1.2.3. 下载客户端 2.1.3. 配置客户端2.…

P20[6-8]编码器接口测速(软)

与外部中断编码器逻辑不同,此处编码器使用的是定时器方法 1.Encoder编码器部分: #include "stm32f10x.h" // Device header void Encoder_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCm…

吐血整理,自动化测试场景处理(多场景覆盖)+解决方案

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、添加时间等待 …

53.最大子数组和

贪心算法 时间复杂度&#xff1a;代码中只有一个循环&#xff0c;循环次数为数组的长度&#xff0c;因此时间复杂度为 O(n)&#xff0c;其中 n 是数组的长度。空间复杂度&#xff1a;代码中只使用了常数级别的额外空间&#xff0c;因此空间复杂度为 O(1)。 这段代码使用贪心算…

QT C++入门学习(2) QT Creator写一个简单的上位机控制LED

上位机和下位机的概念 上位机&#xff1a;指的是可以直接发送操作指令的计算机或者单片机&#xff0c;一般提供用户操作交互界面并向用户展示反馈数据。 典型设备&#xff1a;电脑、平板、手机、面板、触摸屏 下位机&#xff1a;指的是与机器相连接的计算机或者单片机&#…

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端

Studio 3T 2023.5 (macOS, Linux, Windows) - MongoDB 的专业 GUI、IDE 和 客户端 请访问原文链接&#xff1a;https://sysin.org/blog/studio-3t-2023/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Studio 3T&#xff0c;M…

黑客松必备|Bear Necessities Hackathon Office Hours汇总

由Moonbeam和AWS Startups联合主办的Bear Necessities Hackathon黑客松启动仪式已于5月30日举行。本次黑客松将历时约1个月的时间&#xff0c;包含6个挑战&#xff0c;分别由Moonbeam基金会、Chainlink、StellaSwap、SubQuery、Biconomy提供赞助&#xff0c;总奖池超过5万美金。…