六十天前端强化训练之第二天CSS选择器与盒模型深度解析

news/2025/2/26 5:23:24

=====欢迎来到编程星辰海的博客讲解======

目录

一、CSS 核心概念

1. 三种引入方式

2. CSS 注释

3. 常见单位系统

二、CSS选择器核心知识

1. 基础选择器类型

2. 组合选择器

3. 伪类选择器(部分示例)

4. 优先级计算规则

三、盒模型深度解析

1. 标准盒模型图示

2. box-sizing详解

四、优先级覆盖实战案例

完整可运行代码

效果说明

五、学习要点总结

六、扩展阅读推荐


🚀 CodePen完全指南:从零开始玩转在线代码沙盒
—— 用浏览器就能写代码的神器,前端开发者的创意游乐场!

一、CSS 核心概念
1. 三种引入方式

HTML

<!-- 行内样式 -->
<div style="color: red;">示例文字</div>

<!-- 内嵌样式 -->
<head>
  <style>
    .box { padding: 20px; }
  </style>
</head>

<!-- 外部样式表 -->
<link rel="stylesheet" href="styles.css">

2. CSS 注释

CSS

/* 单行注释 */
/*
  多行注释
  可跨多行
*/

3. 常见单位系统
单位类型示例适用场景
绝对单位px, pt固定尺寸元素
相对单位em, rem, %响应式布局
视窗单位vw, vh全屏布局
颜色单位#fff, rgb()颜色定义

CSS(层叠样式表)的基本语法由选择器声明块组成:


1. 选择器

指定要样式化的HTML元素。常见类型:

  • 元素选择器p { ... }(选中所有<p>标签)

  • 类选择器.class { ... }(选中class="class"的元素)

  • ID选择器#id { ... }(选中id="id"的元素)


2. 声明块

用大括号 {} 包裹,内部是属性-值对

CSS

选择器 {
  属性1: 值;
  属性2: 值;
}

示例

CSS

p {
  color: red;        /* 文字颜色 */
  font-size: 16px;   /* 字号 */
  margin: 10px;      /* 外边距 */
}


3. 属性和值

  • 属性:要修改的样式类型(如 colorwidth

  • :具体的样式设置(如 blue50%20px

  • 每对属性值用 : 连接,结尾用 ; 分隔。


4. 注释

用 /* 注释内容 */ 添加说明。


5. 常见注意点

  • 区分大小写(建议全小写)

  • 分号不可省略(最后一个声明可省,但建议保留)

  • 属性值可用空格、百分比、颜色名称等多种形式。


一句话总结
通过 选择器 { 属性: 值; } 的格式,精准控制网页元素的样式表现。

二、CSS选择器核心知识
1. 基础选择器类型

CSS

/* 元素选择器 */
div { color: red; }

/* 类选择器 */
.container { width: 1200px; }

/* ID选择器 */
#main-nav { background: #333; }

/* 属性选择器 */
input[type="text"] { border: 1px solid #ccc; }

/* 通配符选择器 */
* { margin: 0; padding: 0; }

2. 组合选择器

CSS

/* 后代选择器 */
article p { line-height: 1.6; }

/* 子选择器 */
ul > li { list-style: none; }

/* 相邻兄弟选择器 */
h2 + p { margin-top: 0; }

/* 通用兄弟选择器 */
h2 ~ p { color: #666; }

3. 伪类选择器(部分示例)

CSS

/* 动态伪类 */
a:hover { color: #f00; }
input:focus { outline: 2px solid blue; }

/* 结构伪类 */
li:nth-child(2n) { background: #f5f5f5; }
tr:first-child { font-weight: bold; }

4. 优先级计算规则

权重等级表:

TEXT

!important > 行内样式(1000) > ID(100) > 类/属性/伪类(10) > 元素/伪元素(1)

计算示例:

CSS

#nav .item:hover  // 100 + 10 + 10 = 120
div#header a.btn  // 1 + 100 + 10 = 111


三、盒模型深度解析
1. 标准盒模型图示

TEXT

+-----------------------------------+
|             margin(40)           |
|  +-----------------------------+  |
|  |          border(2)          |  |
|  |  +-----------------------+  |  |
|  |  |       padding(20)     |  |  |
|  |  |  +-----------------+  |  |  |
|  |  |  |  content(200)   |  |  |  |
|  |  |  +-----------------+  |  |  |
|  |  +-----------------------+  |  |
|  +-----------------------------+  |
+-----------------------------------+

2. box-sizing详解

CSS

.box {
  box-sizing: content-box; /* 默认值 */
  box-sizing: border-box;  /* 现代开发推荐值 */
}

尺寸计算对比:

TEXT

content-box: width = content宽度
border-box: width = content + padding + border


四、优先级覆盖实战案例
完整可运行代码

HTML

<!DOCTYPE html>
<html>
<head>
<style>
  /* 元素选择器(权重:0,0,1) */
  div { 
    width: 200px;
    padding: 20px;
    background: lightblue !important;  /* 强制最高优先级 */
  }

  /* 类选择器(权重:0,1,0) */
  .priority-box {
    background: lightgreen;
    border: 2px solid darkgreen;
  }

  /* ID选择器(权重:1,0,0) */
  #specialBox {
    background: salmon;
    margin: 10px;
  }

  /* 行内样式(权重:1,0,0,0) */
</style>
</head>
<body>
  <div class="priority-box" id="specialBox" 
       style="background: goldenrod">
    优先级实践盒子
  </div>
</body>
</html>

效果说明

最终显示效果:

  • 背景色:lightblue(!important强制覆盖)
  • 边框:darkgreen(类选择器生效)
  • 外边距:10px(ID选择器生效)
  • 行内样式背景色被覆盖

五、学习要点总结
  1. 优先级黄金法则

    • !important > 行内样式 > ID > 类 > 元素
    • 权重计算不采用十进制进位制
    • 相同优先级时后定义的生效
  2. 盒模型要点

    • 总宽度 = width + padding + border + margin
    • box-sizing改变计算方式
    • 负margin的特殊应用场景
  3. 开发建议

    • 避免过度使用ID选择器
    • 谨慎使用!important
    • 统一使用border-box模型

    CSS

    * { 
      box-sizing: border-box;
      margin: 0; 
      padding: 0; 
    }
    


六、扩展阅读推荐
  1. 官方文档:

    • MDN CSS选择器
    • W3C盒模型规范
  2. 深度文章:

    • CSS选择器性能优化指南
    • 现代CSS盒模型最佳实践
  3. 可视化工具:

    • CSS选择器测试沙盒
    • 交互式盒模型演示

建议通过Chrome开发者工具的Elements面板实时调试选择器匹配情况和盒模型计算细节,这是掌握这些概念的最佳实践方式。


http://www.niftyadmin.cn/n/5868031.html

相关文章

JavaWeb-GenericServlet源码分析(适配器/模板方法)

文章目录 类直接实现Servlet接口的弊端Servlet接口的方法适配器设计模式 适配器对象的改造关于init方法的ServletConfig对象来源使用模板方法设计模式改造init方法 GenericServlet内置抽象类ServletConfig接口ServletConfig接口简介测试再谈GenericServlet抽象类 类直接实现Ser…

微软开源神器OmniParser-v2.0本地部署教程

安装python环境 我这里是以前安装好的版本&#xff1a;python 3.11.5&#xff0c;这里不再介绍&#xff0c;有需要的可以在网上找教程。 安装Anaconda 我这里是以前安装好的版本&#xff1a;conda 23.7.4&#xff0c;这里也不再介绍&#xff0c;有需要的可以在网上找教程。 …

wifi5和wifi6,WiFi 2.4G、5G,五类网线和六类网线,4G和5G的区别

wifi5和wifi6的区别 是Wi-Fi 5和Wi-Fi 6的选择与路由器密切相关。路由器是创建和管理无线网络的设备,它决定了网络的类型和性能。具体来说: 路由器的标准支持:路由器可以支持不同的Wi-Fi标准,如Wi-Fi 5(802.11ac)和Wi-Fi 6(802.11ax)。支持Wi-Fi 6的路由器能够提供更高…

Node.js定义以及性能优化

Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时&#xff0c;广泛用于构建高性能的网络应用。以下是一些常见的 Node.js 面试题及其解答&#xff0c;帮助你准备面试&#xff1a; 1. 什么是 Node.js&#xff1f; Node.js 是一个基于 Chrome V8 引擎的 JavaSc…

神经网络发展简史:从感知机到通用智能的进化之路

引言 神经网络作为人工智能的核心技术&#xff0c;其发展历程堪称一场人类对生物大脑的致敬与超越。本文将用"模型进化"的视角&#xff0c;梳理神经网络发展的五大关键阶段&#xff0c;结合具象化比喻和经典案例&#xff0c;为读者呈现一幅清晰的AI算法发展图谱。 一…

《百度蜘蛛池:提升网站收录的关键利器》

Tbaidutopseo(蜘蛛池.中国) 在互联网的浩瀚世界中&#xff0c;网站如同繁星般众多&#xff0c;如何让自己的网站脱颖而出&#xff0c;获得更多的流量和曝光&#xff0c;是每一位网站所有者都在思考的问题。而网站收录&#xff0c;作为网站在搜索引擎中展示的基础&#xff0c;其…

JavaWeb 学习笔记

前端基础 HTML-CSS <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport"content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0…

[特殊字符] 蓝桥杯 Java B 组 之最小生成树(Prim、Kruskal) 并查集应用

Day 3&#xff1a;最小生成树&#xff08;Prim、Kruskal&#xff09; & 并查集应用 &#x1f4d6; 一、最小生成树&#xff08;MST&#xff09;简介 最小生成树&#xff08;Minimum Spanning Tree, MST&#xff09; 是一个 无向连通图 的 最小代价子图&#xff0c;它包含 …