第1章:CSS简介 --[CSS零基础入门]

news2024/12/4 16:00:54

1. 什么是CSS

CSS(层叠样式表,Cascading Style Sheets)是一种用于描述HTML或XML(包括各种XML方言如SVG、XHTML等)文档表现的样式语言。CSS的主要目的是将网页的内容与它的表现形式分离,从而使得开发者能够更灵活地控制页面的布局和外观。

主要特点

  1. 分离内容与样式

    • CSS允许你将网页的内容(HTML)与样式(CSS)分开。这样做的好处是,你可以通过修改一个CSS文件来改变整个网站的外观,而不需要逐个修改每个HTML文件。
    • 这种分离提高了代码的可维护性和可重用性。
  2. 层叠性

    • CSS的“层叠”特性意味着多个样式规则可以应用于同一个元素,最终的效果是由这些规则按优先级顺序叠加而成的。
    • 优先级取决于选择器的特异性、!important声明以及样式的来源(如内联样式、内部样式表、外部样式表等)。
  3. 灵活性

    • CSS提供了丰富的选择器和属性,可以精确控制元素的各个方面,如字体、颜色、背景、边距、填充、布局等。
    • 通过使用CSS预处理器(如Sass、Less、Stylus),你可以编写更复杂和模块化的样式代码。
  4. 响应式设计

    • CSS使得网页能够在不同设备和屏幕尺寸上自适应显示,通过媒体查询和视口单位,可以轻松实现响应式布局。
  5. 性能优化

    • 合理使用CSS可以减少页面加载时间,提高用户体验。例如,通过压缩CSS文件、使用CSS Sprites、避免使用过多的嵌套选择器等方法。

基本语法

CSS的基本语法由选择器和声明块组成。选择器用于指定要应用样式的HTML元素,声明块则包含具体的样式规则。

/* 选择器 */
selector {
    /* 声明块 */
    property: value;
    property: value;
}
  • 选择器:指定要应用样式的HTML元素。例如,p 选择所有的 <p> 元素,.classname 选择所有带有 classname 类的元素,#idname 选择具有 idname ID 的元素。
  • 声明块:包含一个或多个声明,每个声明由属性和值组成,中间用冒号分隔,以分号结束。

示例

/* 选择所有段落元素,并设置字体大小为16像素 */
p {
    font-size: 16px;
}

/* 选择所有带有 "header" 类的元素,并设置背景颜色为蓝色 */
.header {
    background-color: blue;
}

/* 选择具有 "main" ID 的元素,并设置宽度为80% */
#main {
    width: 80%;
}

应用方式

CSS可以通过以下几种方式应用到HTML文档中:

  1. 内联样式

    • 直接在HTML元素的 style 属性中定义样式。
    <p style="color: red;">这是一个红色的段落。</p>
    
  2. 内部样式表

    • 在HTML文档的 <head> 部分使用 <style> 标签定义样式。
    <head>
        <style>
            p {
                color: red;
            }
        </style>
    </head>
    
  3. 外部样式表

    • 将CSS代码保存在一个单独的 .css 文件中,然后在HTML文档中通过 <link> 标签引用该文件。
    <head>
        <link rel="stylesheet" href="styles.css">
    </head>
    

    styles.css 文件内容:

    p {
        color: red;
    }
    

2. CSS的历史

CSS(层叠样式表,Cascading Style Sheets)的发展历程可以追溯到20世纪90年代。以下是CSS从诞生到现在的关键历史节点和发展阶段:

1. 早期概念(1990s初)

  • 背景:在Web的早期,HTML是唯一的标记语言,用于描述网页的内容和布局。然而,HTML的设计初衷是为了文档结构,而不是视觉表现。随着Web的发展,人们开始意识到需要一种更强大的方式来控制页面的外观。
  • 提出:1994年,Håkon Wium Lie提出了CSS的概念,旨在将内容与表现分离,使得开发者能够更灵活地控制网页的布局和外观。

2. CSS1(1996年)

  • 发布:1996年12月,W3C(万维网联盟)发布了第一个CSS规范——CSS1。这个版本定义了基本的样式规则,包括字体、颜色、背景、文本对齐等。
  • 特点
    • 引入了选择器(如元素选择器、类选择器、ID选择器)。
    • 定义了盒模型的基本概念。
    • 提供了基本的布局和定位功能。

3. CSS2(1998年)

  • 发布:1998年5月,W3C发布了CSS2规范。CSS2在CSS1的基础上增加了更多的选择器、属性和伪类。
  • 特点
    • 增加了浮动(float)、绝对定位(position: absolute)等功能。
    • 引入了媒体类型(media types),允许针对不同的设备和媒介指定不同的样式。
    • 增加了表格布局(table layout)和生成内容(generated content)的支持。

4. CSS2.1(2004年)

  • 发布:2004年2月,W3C发布了CSS2.1规范。CSS2.1是对CSS2的修订和澄清,修复了一些不明确或实现不一致的地方。
  • 特点
    • 对CSS2中的错误和不一致进行了修正。
    • 明确了浏览器应该如何处理某些CSS规则。
    • 成为第一个广泛支持的标准,许多现代浏览器都实现了CSS2.1。

5. CSS3(2001年开始)

  • 模块化设计:CSS3引入了模块化的开发方式,每个模块可以独立发展和标准化。这使得新特性可以更快地被添加和实施。
  • 主要模块
    • 选择器 Level 3:增强了选择器的功能,如伪类和伪元素。
    • 背景和边框:提供了更丰富的背景和边框样式。
    • 颜色:引入了新的颜色表示法,如RGBA和HSLA。
    • 文字效果:增加了阴影、渐变等文字效果。
    • 2D/3D变换:提供了旋转、缩放、平移等变换功能。
    • 动画和过渡:引入了@keyframes动画和transition过渡效果。
    • Flexbox:提供了一种更灵活的布局方式。
    • Grid布局:提供了一种基于网格的布局系统。
    • 响应式设计:通过媒体查询(Media Queries)支持响应式设计。

6. 当前状态

  • 持续发展:CSS3的各个模块仍在不断发展和完善中,新的特性不断被提出和标准化。
  • 浏览器支持:现代浏览器对CSS3的支持越来越广泛,许多新特性已经可以在生产环境中使用。
  • 未来展望:CSS4并不是一个正式的术语,而是指CSS3之后的新特性。这些新特性将继续以模块化的方式发展,逐步被纳入标准并得到浏览器的支持。

3. CSS的作用

CSS(层叠样式表)在网页开发中扮演着至关重要的角色,它为HTML文档提供了丰富的视觉表现和布局控制。以下是CSS的主要作用:

1. 分离内容与样式

  • 内容与表现的分离:CSS允许你将网页的内容(HTML)与它的表现形式(样式)分开。这样做的好处是,你可以通过修改一个CSS文件来改变整个网站的外观,而不需要逐个修改每个HTML文件。
  • 可维护性:通过将样式集中管理,可以更容易地进行全局更改,提高代码的可维护性和可重用性。

2. 控制页面布局

  • 布局控制:CSS提供了多种布局方式,如Flexbox、Grid布局、浮动(float)、绝对定位(position: absolute)等,使得开发者能够灵活地控制页面元素的位置和排列。
  • 响应式设计:通过媒体查询(Media Queries),CSS可以实现响应式设计,使网页在不同设备和屏幕尺寸上自适应显示,提供更好的用户体验。

3. 美化页面

  • 字体控制:CSS允许你设置字体系列、大小、粗细、样式等,从而控制文本的外观。
  • 颜色和背景:你可以设置文字颜色、背景颜色、背景图片、渐变背景等,使页面更加美观。
  • 边框和阴影:CSS可以为元素添加边框、圆角、阴影等效果,增强页面的视觉吸引力。
  • 动画和过渡:通过CSS动画和过渡效果,可以创建动态的视觉效果,提升用户体验。

4. 提高性能

  • 减少HTTP请求:通过使用CSS Sprites(雪碧图)和内联小图标(如Font Awesome),可以减少HTTP请求次数,提高页面加载速度。
  • 压缩和优化:通过压缩CSS文件和使用高效的编码实践,可以减小文件大小,加快页面加载速度。
  • 避免重复样式:合理使用CSS类和ID选择器,避免重复定义相同的样式,减少冗余代码。

5. 提高可访问性

  • 无障碍设计:通过CSS,可以设置适当的对比度、字体大小、焦点样式等,提高网页的可访问性,使其对所有用户(包括残障人士)都友好。
  • 语义化命名:使用语义化的CSS类名和ID名,有助于屏幕阅读器和其他辅助技术更好地理解页面结构。

6. 跨浏览器兼容性

  • 统一标准:虽然不同浏览器对CSS的支持程度可能有所不同,但通过遵循W3C标准和使用CSS前缀(如-webkit--moz-等),可以确保样式在不同浏览器中的一致性。
  • Polyfills和Fallbacks:对于不支持某些CSS特性的旧浏览器,可以使用Polyfills或Fallbacks来提供备用方案,确保页面在所有浏览器中都能正常显示。

7. 简化开发流程

  • 预处理器:通过使用CSS预处理器(如Sass、Less、Stylus),可以编写更复杂和模块化的样式代码,提高开发效率。
  • 框架和库:许多CSS框架(如Bootstrap、Tailwind CSS)提供了预定义的样式和组件,可以帮助开发者快速构建美观且一致的界面。

8. 交互和动态效果

  • 伪类和伪元素:CSS伪类(如:hover:active)和伪元素(如::before::after)可以用来创建交互效果和动态内容。
  • 动画:通过@keyframesanimation属性,可以创建复杂的动画效果,使页面更加生动。

4. CSS与HTML的关系

CSS(层叠样式表)和HTML(超文本标记语言)是Web开发中两个核心的技术,它们各自承担不同的角色,但又紧密相关。理解它们之间的关系对于构建结构清晰、样式美观且功能强大的网页至关重要。

1. 内容与表现的分离

  • HTML:负责定义网页的内容结构。HTML标签描述了页面上的各个部分,如标题、段落、列表、链接、图像等。
  • CSS:负责定义这些内容的外观和布局。CSS控制字体、颜色、背景、边距、填充、布局等视觉属性。

通过将内容与表现分离,可以实现以下好处:

  • 可维护性:修改一个CSS文件可以影响整个网站的外观,而不需要逐个修改每个HTML文件。
  • 可重用性:相同的CSS样式可以应用于多个HTML文件,提高代码的复用率。
  • 团队协作:前端开发者可以分工合作,一些人专注于内容结构(HTML),另一些人专注于样式设计(CSS)。

2. HTML文档中的CSS应用方式

CSS可以通过以下几种方式应用到HTML文档中:

  1. 内联样式(Inline Styles)

    • 直接在HTML元素的style属性中定义样式。
    <p style="color: red; font-size: 16px;">这是一个红色的段落。</p>
    
    • 优点:简单直接,适用于个别特殊情况。
    • 缺点:难以维护,不推荐大规模使用。
  2. 内部样式表(Internal Stylesheet)

    • 在HTML文档的<head>部分使用<style>标签定义样式。
    <head>
        <style>
            p {
                color: red;
                font-size: 16px;
            }
        </style>
    </head>
    <body>
        <p>这是一个红色的段落。</p>
    </body>
    
    • 优点:适用于单个页面,方便管理和调试。
    • 缺点:如果多个页面需要相同的样式,会导致代码冗余。
  3. 外部样式表(External Stylesheet)

    • 将CSS代码保存在一个单独的.css文件中,然后在HTML文档中通过<link>标签引用该文件。
    <head>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <p>这是一个红色的段落。</p>
    </body>
    

    styles.css 文件内容:

    p {
        color: red;
        font-size: 16px;
    }
    
    • 优点:易于维护,可以跨多个页面重用,适合大型项目。
    • 缺点:需要额外的HTTP请求来加载外部CSS文件。

3. 选择器与HTML元素

CSS选择器用于指定要应用样式的HTML元素。常见的选择器包括:

  • 元素选择器:选择特定类型的HTML元素。

    p {
        color: blue;
    }
    
  • 类选择器:选择具有特定类名的元素。

    .highlight {
        background-color: yellow;
    }
    
  • ID选择器:选择具有特定ID的元素。

    #header {
        text-align: center;
    }
    
  • 属性选择器:选择具有特定属性的元素。

    input[type="text"] {
        border: 1px solid #ccc;
    }
    
  • 伪类和伪元素:选择特定状态或位置的元素。

    a:hover {
        color: red;
    }
    
    p::first-line {
        font-weight: bold;
    }
    

4. 盒模型与布局

  • 盒模型:CSS中的每个元素都可以看作是一个矩形盒子,由内容区、内边距、边框和外边距组成。

    .box {
        width: 200px;
        height: 200px;
        padding: 10px;
        border: 1px solid black;
        margin: 10px;
    }
    
  • 布局:CSS提供了多种布局方式,如Flexbox、Grid布局、浮动(float)、绝对定位(position: absolute)等,使得开发者能够灵活地控制页面元素的位置和排列。

5. 响应式设计

  • 媒体查询:通过媒体查询,可以根据不同的设备和屏幕尺寸应用不同的样式规则,实现响应式设计。

    @media (max-width: 600px) {
        body {
            font-size: 14px;
        }
    }
    

5. 设置开发环境

  • 文本编辑器:推荐使用支持语法高亮和自动补全功能的编辑器,如Visual Studio Code、Sublime Text、Atom等。
  • 浏览器:建议安装主流浏览器,如Chrome、Firefox、Edge等,并确保它们是最新的版本。
  • 开发工具
    • Chrome DevTools:内置在Chrome浏览器中的强大工具,用于调试和检查CSS。
    • Firefox Developer Tools:Firefox浏览器中的类似工具。
  • 扩展和插件
    • Live Server:VS Code的一个扩展,可以实时预览HTML和CSS文件。
    • Prettier:格式化代码的工具,保持代码风格一致。
  • 在线资源
    • MDN Web Docs:Mozilla提供的权威CSS文档。
    • W3Schools:提供大量的CSS教程和示例。
    • CSS Tricks:一个专注于CSS的博客,包含很多实用的技巧和文章。

6. 总结

  • 本章介绍了CSS的基本概念、历史、作用以及与HTML的关系。
  • 通过设置合适的开发环境,你可以开始编写和调试CSS代码。
  • 接下来,我们将深入学习CSS的基本语法和选择器,为后续的学习打下坚实的基础。

这个章节为初学者提供了对CSS的基本了解,并帮助他们理解为什么需要学习CSS以及如何设置开发环境。接下来的章节将逐步深入到具体的CSS语法和应用。

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

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

相关文章

Android笔记【12】脚手架Scaffold和导航Navigation

一、前言 学习课程时&#xff0c;对于自己不懂的点的记录。 对于cy老师第二节课总结。 二、内容 1、PPT介绍scaffold 2、开始代码实操 先新建一个screen包&#xff0c;写一个Homescreen函数&#xff0c;包括四个页面。 再新建一个compenent包&#xff0c;写一个displayText…

HookVip4.0.3 | 可解锁各大应用会员

HookVip是一款可以解锁会员的模块工具&#xff0c;需要搭配相应框架结合使用。这款插件工具支持多种框架如LSPosed、LSPatch、太极、应用转生等&#xff0c;并且完全免费&#xff0c;占用内存小。支持的软件包括now要想、神奇脑波、塔罗牌占卜、爱剪辑、人人视频、咪萌桌面宠物…

猎板 PCB特殊工艺:铸就电子行业核心竞争力新高度

在当今竞争激烈且技术驱动的电子制造领域&#xff0c;印制电路板&#xff08;PCB&#xff09;作为电子产品的关键基石&#xff0c;其特殊工艺的发展水平直接影响着整个行业的创新步伐与产品品质。猎板 PCB 凭借在厚铜板、孔口铺铜、HDI 板、大尺寸板以及高频高速板等特殊工艺方…

【教学类-43-25】20241203 数独3宫格的所有可能-使用模版替换(12套样式,空1格-空8格,每套510张,共6120小图)

前期做数独惨宫格的所有排列&#xff0c;共有12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120小图&#xff09; 【教学类-43-24】20241127 数独3宫格的所有可能&#xff08;12套样式&#xff0c;空1格-空8格&#xff0c;每套510张&#xff0c;共6120…

Redis+Caffeine 多级缓存数据一致性解决方案

RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战&#xff0c;文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能&#xff0c;但是可能会出现缓存一致性问题。如果数据频繁的变更&#xff0c;可能会导…

echarts地图立体效果,echarts地图点击事件,echarts地图自定义自定义tooltip

一.地图立体效果 方法1:两层地图叠加 实现原理:geo数组中放入两个地图对象,通过修改zlevel属性以及top,left,right,bottom形成视觉差 配置项参考如下代码: geo: [{zlevel: 2,top: 96,map: map,itemStyle: {color: #091A51ee,opacity: 1,borderWidth: 2,borderColor: #16BAFA…

D87【python 接口自动化学习】- pytest基础用法

day87 pytest运行参数 -m -k 学习日期&#xff1a;20241203 学习目标&#xff1a;pytest基础用法 -- pytest运行参数-m -k 学习笔记&#xff1a; 常用运行参数 pytest运行参数-m -k pytest -m 执行特定的测试用例&#xff0c;markers最好使用英文 [pytest] testpaths./te…

总结拓展十七:特殊采购业务——委外业务

SAP中委外采购业务&#xff0c;又称供应商分包&#xff08;或外协、转包、、外包、托外等&#xff09;&#xff0c;是企业将部分生产任务委托给外部供应商/集团其他分子公司完成的一种特殊采购业务模式。 委外业务主要有2大类型&#xff0c;分别是标准委外&#xff08;委外采购…

ESP8266作为TCP客户端或者服务器使用

ESP8266模块&#xff0c;STA模式&#xff08;与手机搭建TCP通讯&#xff0c;EPS8266为服务端&#xff09;_esp8266作为station-CSDN博客 ESP8266模块&#xff0c;STA模式&#xff08;与电脑搭建TCP通讯&#xff0c;ESP8266 为客户端&#xff09;_esp8266 sta 连接tcp-CSDN博客…

ATTCK红队评估实战靶场(四)

靶机链接&#xff1a;http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ 环境搭建 新建两张仅主机网卡&#xff0c;一张192.168.183.0网段&#xff08;内网网卡&#xff09;&#xff0c;一张192.168.157.0网段&#xff08;模拟外网网段&#xff09;&#xff0c;然后按照拓补…

C 语言 “神秘魔杖”—— 指针初相识,解锁编程魔法大门(一)

文章目录 一、概念1、取地址操作符&#xff08;&&#xff09;2、解引用操作符&#xff08;*&#xff09;3、指针变量1、 声明和初始化2、 用途 二、内存和地址三、指针变量类型的意义1、 指针变量类型的基本含义2、 举例说明不同类型指针变量的意义 四、const修饰指针1、co…

封装loding加载动画的请求

图片 /*** Loading 状态管理类*/ export class Loading {constructor(timer300) {this.value falsethis.timer timer}/*** 执行异步操作并自动管理 loading 状态* param {Promise|Function|any} target - Promise、函数或其他值* returns {Promise} - 返回请求结果*/async r…

人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作,一副手套全部解决!

广州虚拟动力基于自研技术推出了多节点mHand Pro动捕数据手套&#xff0c;其最大的特点就是功能集成与高精度捕捉&#xff0c;可以用于人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作等多种场景。 一、人形机器人训练 mHand Pro动捕数据手套双手共装配16个9轴惯性…

Nginx Web服务器管理、均衡负载、访问控制与跨域问题

Nginx Web 服务器的均衡负载、访问控制与跨域问题 Nginx 的配置 1. 安装Nginx 首先安装Nginx apt install nginx -ycaccpurgatory-v:~$ sudo apt install nginx [sudo] password for cacc: Reading package lists... Done Building dependency tree... Done Reading state i…

Bert+CRF的NER实战

CRF&#xff08;条件随机场-Conditional Random Field&#xff09; 原始本文&#xff1a;我在北京吃炸酱面 标注示例&#xff08;采用BIO标注方式&#xff09;&#xff1a; 我O在O北B-PLA京I-PLA吃O炸B-FOOD酱I-FOOD面I-FOOD CRF&#xff1a; 目的&#xff1a;提出一些不可能…

C++语法·识

人生建议&#xff1a;请手机反省一下&#xff0c;为什么总拉着我熬夜。 目录 STL简介 string类容器一 auto&#xff08;自动声明类型&#xff09; 简介&#xff1a; 特点 范围for&#xff08;语法糖&#xff09; 简介 特点 string string类的常见接口 1.构造 2.容…

蓝桥杯准备训练(lesson1,c++方向)

前言 报名参加了蓝桥杯&#xff08;c&#xff09;方向的宝子们&#xff0c;今天我将与大家一起努力参赛&#xff0c;后序会与大家分享我的学习情况&#xff0c;我将从最基础的内容开始学习&#xff0c;带大家打好基础&#xff0c;在每节课后都会有练习题&#xff0c;刚开始的练…

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…

winform跨线程更新界面

前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任软件经理&#xff0c;从事C#上位机软件开发8年以上&#xff01;我们在开发C#程序的时候&#xff0c;有时候需要在非Ui主线程更新界面&#xff0c;为了…

无界(wujie)微前端项目搭建,nginx线上部署,pnpm一键安装依赖、启动应用,git代码仓库存放方式

这里写自定义目录标题 1. 创建项目项目目录布局选择主应用子应用 2. pnpm包管理&#xff0c;一键安装、启动、打包pnpm一键安装依赖npm-run-all 一键启动、打包 3. nginx线上部署主应用中子应用中nginx文件目录及配置 git代码存放方式 1. 创建项目 主应用&#xff1a; vue3vit…