还剩48页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
样式课程概述CSS欢迎来到样式课程!在这个全面的课程中,我们将探索层叠样式表的CSS CSS核心概念、实用技术和最佳实践是现代网页设计的基石,掌握它将使您能CSS够创建视觉上吸引人且功能强大的网站从基础语法到高级布局技术,从响应式设计到动画效果,我们将深入研究的CSS各个方面,帮助您成为一名熟练的前端开发者无论您是初学者还是希望提升技能的专业人士,本课程都将为您提供所需的知识和工具让我们开始这段激动人心的学习之旅吧!CSS什么是?CSS层叠样式表定义元素显示方12HTML式代表层叠样式表CSS,控制元素在浏览器Cascading StyleSheets CSS HTML是一种用于描述网页视觉表现中的显示方式,包括布局、颜的样式语言层叠一词表示色、字体、大小和动画等通多个样式规则可以应用于同一过,开发者可以将网页从CSS元素,并按照特定的优先级进简单的文本文档转变为视觉丰行层叠富的交互式体验与的关系3HTML如果将网页比作一栋建筑,就是结构框架,而则是装饰和设HTML CSS计让我们能够在不改变内容的情况下,完全改变网页的外观和感CSS觉,实现内容与表现的分离的历史和发展CSS(年)1CSS11996的第一个版本于年月由推出,引入了字体、颜色、文本对CSS199612W3C齐等基本属性虽然功能有限,但这标志着网页设计的革命性转变,开始实现内容与表现的分离(年)2CSS21998于年月发布,带来了更多高级功能,如绝对定位、相对定位和CSS219985等它还增加了媒体类型的概念,允许开发者为不同设备创建不同的z-index样式表(年至今)3CSS32011不是单一规范,而是分模块开发的从年开始,各个模块陆续发CSS32011布,包括选择器、盒模型、背景与边框、文本效果、转换、动画、多2D/3D列布局和等这使得变得更加强大和灵活Flexbox CSS的优势CSS分离内容和表现提高网页加载速度便于维护和更新实现了内容与表现通过将样式信息放在外当设计需要变更时,只CSS的分离,使文档部文件中,浏览器需修改文件而无需HTML CSS CSS专注于结构和内容,而可以缓存这些文件,减触及这使得网HTML将样式相关的控制交给少重复下载一个外部站的重新设计变得简单这种分离简化了样式表可以控制多个页高效,特别是对于大型CSS维护工作,提高了开发面的外观,大大减少了网站,一个小小的CSS效率,并使代码更加清总体数据传输量,使网修改就能影响整个网站晰站加载更快的外观基础语法CSS选择器属性值{:;}规则由两个主要部分组成选择器和声明块选择器指定哪些CSS HTML元素将被样式化,而声明块包含一个或多个声明,每个声明由属性和值组成,以分号分隔语法示例例如,表示将所有段落文本设置p{color:blue;font-size:16px;}为蓝色,字体大小为像素选择器指定了目标元素,而16p{color:是声明块blue;font-size:16px;}注释注释内容/**/中的注释以开始,以结束注释不会被浏览器解析,CSS/**/但对于开发者理解和维护代码非常有用良好的注释习惯可以使代码更易于理解和协作引入方式CSS内联样式内部样式表外部样式表内联样式直接应用于元素的属内部样式表使用标签在文外部样式表是最推荐的方式,将代码HTML stylestyle HTMLCSS性中例如档的部分定义样式这种方法可保存在独立的文件中,然后在p style=color:blue;head.css HTML这是一个段落以应用于整个页面,但不能被其他页面复文档的部分使用标签引入font-size:16px;/p headlink这种方法优先级最高,但不利于样式复用,用,适合单页面应用或特定页面样式这种方法实现了最大程度的样式复用和代不推荐大量使用码分离选择器
(一)基本选择器CSS元素选择器类选择器元素选择器根据标签名称选择类选择器以点号()开头,选择具HTML.元素例如,会选有特定属性的元素例p{color:blue;}class择所有标签,并将其文本颜色设如,p.highlight{background-置为蓝色这是最基本的选择器类型,会选择所有color:yellow;}通常用于设置网站的全局样式的元素,并设置黄class=highlight色背景一个元素可以拥有多个类选择器ID选择器以井号()开头,选择具有特定属性的元素例如,ID#id#header会选择的元素,并设置其高度为像素在页{height:80px;}id=header80ID面中应当是唯一的选择器
(二)组合选择器CSS后代选择器后代选择器使用空格分隔,选择指定元素内部的所有匹配元素,无论嵌套层级例如,选择所有位于元素内的元素,包括深层嵌套的段落article particle p子选择器子选择器使用大于号()分隔,只选择直接子元素例如,只选择作为ulli ul直接子元素的元素,不包括嵌套在更深层级的列表项li相邻兄弟选择器相邻兄弟选择器使用加号()分隔,选择紧跟在指定元素之后的兄弟元素例如,+选择紧跟在元素后面的第一个元素h2+p h2p通用兄弟选择器通用兄弟选择器使用波浪号()分隔,选择指定元素之后的所有兄弟元素例如,~选择同一父元素下,位于元素之后的所有元素h2~p h2p选择器
(三)属性选择器CSS[attribute=value][attribute]选择具有指定属性且值完全匹配的元素选择具有指定属性的元素,不考虑属性值例如,选择所有[type=text]例如,选择所有具有[disabled]2的元素,如文本输入框type=text属性的元素,无论其值是什么1disabled[attribute~=value]选择属性值包含指定单词的元素例如,选择属性中[class~=warning]class3包含单词的元素warning[attribute$=value]5选择属性值以指定字符串结尾的元素例[attribute^=value]如,选择所有指向4[href$=.pdf]PDF选择属性值以指定字符串开头的元素例文件的链接如,选择所有以[href^=https]开头的链接https选择器
(四)伪类和伪元素CSS伪类使用单冒号()表示,用于定义元素的特殊状态例如,表示鼠标悬停状态,表示激活状态,表示获得焦点的状::hover:active:focus态这些伪类使我们能够创建交互式效果,提升用户体验伪元素使用双冒号()表示,用于创建不存在于树中的元素和是最常用的伪元素,可以在元素内容的前面或后面::DOM::before::after插入内容和则分别选择元素的第一行和第一个字母::first-line::first-letter颜色和背景CSS颜色值表示方法背景颜色12中可以使用多种方式表示颜属性设置元CSS background-color色十六进制值(如素的背景颜色可以应用于任何#FF0000表示红色)、值(如元素,从整个页面()到单RGB body)、值(增个段落或小块元素背景颜色会rgb255,0,0RGBA加透明度控制)、值(色相、填充元素的内容区域、内边距和HSL饱和度、亮度)和关键字(如、边框(除非边框样式覆盖)red)和还允许设blue RGBAHSLA置透明度背景图像3属性设置元素的背景图像可以使用函数指定图像background-image url路径,还可以配合、和background-repeat background-position等属性控制图像的平铺、位置和大小还支持多重背background-size CSS3景图像文本样式CSS4+6+主要字体属性文本对齐与间距指定文本的字体系列,可以提供多个备控制文本水平对齐方式(左、右、居中或font-family text-align选字体设置文本大小,可以使用、两端对齐)设置行高,对可读性至关font-size pxline-height、等单位控制文本粗细,可重要和分别控制字em remfont-weight letter-spacing word-spacing以使用关键字(如)或数值(如)母和单词之间的间距设置段落首行缩bold700font-text-indent设置文本样式,如斜体()进style italic8+文本装饰与变换添加下划线、上划线或删除线text-decoration控制文本大小写(全大写、全小写text-transform或首字母大写)为文本添加阴影效text-shadow果,增强视觉层次和控white-space word-wrap制文本换行和溢出行为盒模型CSS内容区域()Content内容区域是盒模型的核心部分,包含元素的实际内容,如文本、图像或其他媒体其尺寸由和width属性决定默认情况下,这些属性只设置内容区域的大小,不包括内边距、边框和外边距height内边距()Padding内边距是内容区域与边框之间的空间可以使用、、和padding-top padding-right padding-bottom分别设置四个方向的内边距,或使用简写属性一次设置所有方向内边距区域通padding-left padding常会显示元素的背景边框()Border边框围绕在内边距和内容区域外可以使用、和设置边框的border-width border-style border-color宽度、样式和颜色,或使用简写属性边框可以是实线、虚线、点线等多种样式border外边距()Margin外边距是边框外的空间,用于控制元素与其他元素之间的距离可以使用、、margin-top margin-right和分别设置,或使用简写属性外边距可以为负值,导致元素重margin-bottom margin-left margin叠定位
(一)属性CSS positionstaticrelative这是元素的默认定位方式,元素按照正常相对定位使元素相对于其正常位置进行定的文档流进行布局此时,、、位设置、、或会top righttop rightbottom left
1、和属性无效大使元素偏离其正常位置,但不会影响其他bottom leftz-index2多数情况下,不需要显式设置元素的位置元素仍占据其在文档流中的position:原始空间staticfixed absolute固定定位使元素相对于浏览器窗口进行定绝对定位使元素相对于最近的非定static4位即使页面滚动,元素也会保持在屏幕位祖先元素进行定位如果没有这样的祖3的同一位置固定定位的元素同样脱离正先,则相对于初始包含块(通常是常文档流,常用于创建固定导航栏或返回)绝对定位的元素会脱离正viewport顶部按钮常文档流,不占据空间定位
(二)和CSS float clear属性属性float clear属性最初用于实现文本环绕图片的效果,后来成为创建多列当使用浮动布局时,常需要控制哪些元素不受浮动影响属floatclear布局的常用方法设置使元素向左浮动,性用于指定元素的哪一侧不允许出现浮动元素防止左float:left float:right clear:left使元素向右浮动浮动元素会脱离正常文档流,其他内容会围绕侧有浮动元素,防止右侧有浮动元素,防clear:right clear:both它显示止两侧都有浮动元素浮动元素的特点是会尽可能靠近容器的左侧或右侧,并且多个浮清除浮动是一个常见的技术,用于解决父元素高度塌陷问题CSS动元素会相互挨着排列如果没有足够的水平空间,浮动元素会当父元素内的所有子元素都浮动时,父元素的高度会变为零解下移到下一行决方法包括使用的空元素、或clear:both overflow:hidden伪元素技术::after显示属性CSS displayblock块级元素占据其父元素的整个水平空间,并在垂直方向上一个接一个地堆叠可以设置、、width height和默认情况下,、、、、等元素的值为margin paddingdiv ph1-h6ul lidisplay blockinline内联元素只占据必要的宽度,不会强制换行和属性不起作用,垂直方向的和width height margin可能不会推开其他元素、、、等元素默认值为padding spana strongem displayinlineinline-block内联块级元素结合了和的特性它像内联元素一样不会强制换行,但可以设置、inline blockwidth、和,且这些属性会正常生效这使它成为创建水平导航菜单的理想选择heightmargin paddingnone设置会使元素完全不显示,不占据任何空间,就像它不存在一样这与display:none visibility:hidden不同,后者只是隐藏元素,但元素仍占据原来的空间常用于创建可切换的内容display:none尺寸单位CSS像素()px像素是一个固定的物理单位,不会随用户设置或设备特性变化它提供精确控制,但不利于响应式设计在许多场景下,像素仍是设置边框、阴1影等细节的首选单位百分比()%百分比单位相对于父元素的对应属性计算例如,意味着宽度为父元素宽度的一半百分比是创建流体布局的2width:50%关键,但在复杂嵌套结构中可能难以预测和em rem相对于元素的字体大小,等于当前元素的字体大小相对于根元素的字体大小3em1em remhtml在嵌套元素中会累积计算,而则始终参考根元素,更容易预测,常用于响应式排版em rem和vh vw视口单位相对于浏览器视口尺寸等于视口高度的,等于视口宽度1vh1%1vw4的这些单位非常适合创建全屏布局或响应式元素,不受父元素尺寸的限制1%布局
(一)基本概念CSS Flexbox容器flex要使用,首先需要设置一个容器,方法是将元素的属性设Flexbox flex display置为或容器的直接子元素自动成为项目容器可以flex inline-flex flex flex控制项目的排列方向、对齐方式和空间分配项目flex项目是容器的直接子元素它们可以在容器内自动增长或收缩,以最flexflex佳方式填充可用空间每个项目可以控制自己的大小比例、对齐方式和顺序,这使非常适合创建灵活的布局Flexbox主轴和交叉轴布局基于两个轴主轴和交叉轴主轴由属性决定,Flexbox flex-direction可以是水平的()或垂直的()交叉轴垂直于主轴理解这两row column个轴的概念对掌握至关重要Flexbox布局
(二)常用属性CSS Flexbox属性应用于功能描述容器设置主轴方向(默认,水平方flex-direction row向)、、(垂直row-reverse column方向)、column-reverse容器沿主轴对齐项目、justify-content flex-start flex-、、、end centerspace-between、space-around space-evenly容器沿交叉轴对齐项目、align-items stretchflex-、、、start flex-end centerbaseline容器控制项目是否换行(默认,flex-wrap nowrap不换行)、、wrap wrap-reverse项目定义项目的增长系数,默认为(不增flex-grow0长)项目定义项目的收缩系数,默认为(可收flex-shrink1缩)项目定义项目在分配空间前的初始大小,默flex-basis认为auto布局
(一)基本概念CSS Grid容器项目grid grid通过设置或网格项目是网格容器的直接子元素display:grid display:创建网格容器与它们被自动放置在网格单元格中,或inline-grid不同,布局是二维的,者可以使用属性明确指定它们应Flexbox GridCSS可以同时控制行和列网格容器定义该占据哪些网格单元格,使其能够跨了整个网格结构,包括行数、列数和越多行或多列它们的大小网格线和网格区域网格线是构成网格结构的水平线和垂直线它们可以用数字索引(从开始)或1自定义名称引用网格区域是由四条网格线包围的矩形区域,可以包含一个或多个网格单元格布局
(二)常用属性CSS Gridgrid-template-columns定义网格的列宽可以使用各种单位(如、、)或特殊关键字(如、px%fr automin-)例如,创建三列,第一列content grid-template-columns:100px1fr2fr宽,其余空间按比例分配给第二和第三列100px1:2grid-template-rows定义网格的行高用法与类似可以使用函数简grid-template-columns repeat化重复值的写法,如创建三个高度相同grid-template-rows:repeat3,100px的行grid-gap设置网格单元格之间的间距这是和的简写属性例如,row-gap column-gap设置行间距为,列间距为在现代浏览器中,可grid-gap:10px20px10px20px以简写为属性gapgrid-template-areas通过命名网格区域创建布局模板这允许您直观地设计网格布局,使代码更易于理解配合属性使用,可以指定网格项目应该放置在哪个命名区域中grid-area响应式设计媒体查询CSS断点设置移动优先断点是媒体查询中的宽度阈值,用于移动优先是一种响应式设计方法,先定义布局改变的点常见的断点包括为移动设备创建基础样式,然后使用媒体查询语法响应式图片移动设备()、平板设备媒体查询为较大屏幕添加增强功能=768px()和桌面设备这种方法通常使用媒体媒体查询使用规则根据不同769px-1024px min-width除了使用媒体查询,还可以通过@media CSS()应根据内容和设查询,确保基础体验适用于所有用户,的设备特性应用不同的样式基本语=1025px设置和max-width:100%height:计需求,而非特定设备来设置断点同时优化更高级的体验法是使图片自动调整大小@media mediatypeand autoHTML5规则的元素和属性提供了condition{/*CSS*/}picture srcset可以是、、更强大的响应式图片解决方案,可以mediatype screenprint等,通常是与设备宽度、根据设备特性加载不同分辨率的图片all condition高度或方向相关的表达式2314变量(自定义属性)CSS声明变量使用变量变量的优势CSS CSS变量(也称为自定义属性)使用前使用函数引用变量,例如使用变量的主要优势包括减少重复CSS--var color:CSS缀声明,通常在选择器中全局定义,函数可以接代码,提高可维护性;支持动态更新,可:root var--main-color;var例如受第二个参数作为备用值,当变量未定义以通过修改变量值;遵循:root{--main-color:JavaScript CSS也可以在特定选择器中声或值无效时使用的级联规则,可在不同上下文中重新定义;#ff0000;}color:var--main-明局部变量,作用域仅限于该选择器及其便于实现主题切换功能color,#000000;后代元素变量可以用于任何属性值,甚至可以在其与预处理器(如)的变量相比,Sass CSS变量命名应遵循一定的规范,使用有意义他变量的声明中使用例如变量是真正的运行时变量,可以通过--light-的名称,多个单词可用连字符分隔变量动态修改,并且继承树main-color:var--main-color,JavaScript DOM名区分大小写,和是不这使得创建基于基本变量的的作用域规则--color--Color#ff0000;同的变量派生变量变得简单过渡效果CSStransition-property指定哪些属性应用过渡效果可以是属性名(如、)、(所有可动画的属性)或(无过渡)并非所有属性都支持CSS specificwidth colorall noneCSS过渡,主要支持具有中间值的数值属性transition-duration指定过渡效果持续的时间,以秒()或毫秒()为单位值越大,过渡越慢;值为表示没有过渡可以为多个属性指定不同的持续时间,如s ms0transition-duration:
0.5s,1s;transition-timing-function控制过渡效果的速度曲线常用值包括(默认,慢开始,快中间,慢结束)、(匀速)、(慢开始)、(慢结束)、ease linearease-in ease-out(慢开始和结束)也可以使用函数自定义曲线ease-in-out cubic-beziertransition-delay指定过渡开始前的延迟时间默认为(立即开始)可以使用负值,使过渡立即开始,但从中间状态开始多个属性可以有不同的延迟值,创0造出序列动画效果简写属性transition以上四个属性可以合并为一个简写属性语法为如果提供多个值组transition transition:property durationtiming-function delay;(用逗号分隔),可以为不同属性指定不同的过渡效果动画CSS规则属性动画与过渡的区别@keyframes animation规则定义动画在不同时间点的是一个简写属性,包含与过渡不同,动画可以定义多个中间状态,@keyframes animation状态可以使用关键字()和(指定名不需要触发事件就能自动开始,并且可以无from0%to animation-name@keyframes(),或者百分比值指定时间点每称)、(持续时间)、限循环动画提供更多控制选项,如播放方100%animation-duration个时间点都定义了元素在该时刻应具有的(速度曲向(、、)、填animation-timing-function normalreverse alternate属性值线)、(延迟时间)、充模式(、、)CSS animation-delay forwardsbackwards both(重复次等animation-iteration-count数)、(播放方向)animation-direction等子属性变换CSStransform:translate transform:rotate transform:scale函数用于移动元素,可以函数使元素围绕一个点旋转,函数改变元素的大小值大于translate rotatescale是水平方向()、垂直方通常是元素的中心点旋转角度可以表示放大,小于表示缩小可以translateX11向()或两者兼有用(度)、、(弧度)单独设置水平方向()或垂直translateY deggrad radscaleX()与相对定位不同,或表示正值表示顺时针旋转,方向()的缩放比例,或者使translate turnscaleY不会影响文档流中的其他负值表示逆时针旋转函用同时设置这种变换不translate rotate3d scalex,y元素常用于悬停效果和动画中,如数可以实现三维旋转效果会影响文档流,常用于悬停效果按钮轻微上移表示激活状态transform:skew函数使元素沿轴和或轴倾skew X/Y斜使元素沿轴倾斜,skewXangle X使元素沿轴倾斜skewYangle Y同时设置两个skewangleX,angleY方向的倾斜过度使用倾斜可能影响可读性,应谨慎使用阴影效果CSS阴影设计最佳实践box-shadow text-shadow属性为元素添加一个或多个属性为文本添加阴影效果阴影是增强界面深度和层次感的有效工具box-shadow text-shadow阴影效果基本语法是基本语法是在材料设计等现代界面中,阴影用于表示box-shadow:text-shadow:h-offset与元素的高度和重要性较大的阴影表示元h-offset v-offset blurspread colorv-offset blurcolor;box-shadow水平偏移和垂直偏移控制阴影位类似,但没有扩展半径和选项素离表面更远,更加突出inset;inset置,模糊半径决定阴影边缘的柔和程度,为获得自然效果,阴影颜色应考虑环境色,扩展半径控制阴影大小文本阴影可以提高文字在复杂背景上的可而非纯黑色低透明度和适度模糊值通常读性,或创建凸起、凹陷、发光等装饰效产生更真实的阴影在动画中,阴影的变设置关键字可以创建内阴影效果可果过多或过大的文本阴影可能影响可读化可以增强交互感和立体感inset以通过用逗号分隔多组值来添加多个阴影,性,应适度使用实现更复杂的效果阴影不会影响元素的尺寸或位置,也不会影响文档流渐变CSS线性渐变()沿着直线方向从一种颜色过渡到另一种颜色语法是linear-gradient linear-gradientdirection,color-stop1,color-方向可以是角度(如)或关键字(如)颜色停止点可以包含颜色值和可选的位置(如stop2,...;45deg toright,to bottomright red20%,)blue80%径向渐变()从一个点向四周扩散语法是形radial-gradient radial-gradientshape sizeat position,color-stop1,color-stop2,...;状可以是或,大小可以是具体值或关键字(如)circle ellipseclosest-side,farthest-corner还支持重复渐变(和)和锥形渐变()渐变可用于背景、边框CSS3repeating-linear-gradient repeating-radial-gradient conic-gradient和文本填充,创造出丰富的视觉效果,而无需使用图片滤镜CSSfilter:blur模糊滤镜使元素内容变得模糊参数值决定模糊半径,单位为像素表示无模糊效果,值越大模糊程度越高常用于创建深度效果、聚焦特定元blur0素或模糊敏感内容filter:brightness亮度滤镜调整元素的亮度参数值为百分比或数字,或表示原始亮度,或表示全黑,大于的值会使元素更亮常用于悬停效果或强100%10%0100%调重要内容filter:contrast对比度滤镜调整元素的对比度参数值为百分比或数字,或表示原始对比度,或表示全灰,大于的值增加对比度可以与其他100%10%0100%滤镜组合使用,增强图像效果filter:grayscale灰度滤镜将元素转换为灰度图像参数值为百分比或数字,或表示完全灰度,或表示原始颜色常用于创建老照片效果或降低非100%10%0重点内容的视觉冲击其他滤镜函数还提供了(色相旋转)、(颜色反转)、(透明度)、(饱和度)、(棕褐色调)等滤镜CSS hue-rotate invertopacity saturatesepia函数多个滤镜可以组合使用,如filter:brightness150%contrast120%;计数器CSScounter-reset属性创建或重置一个或多个计数器语法是,其中counter-reset counter-reset:name value;name是计数器名称,是初始值(默认为)通常在父元素上设置,如或,为子元素的自动编号做value0ol ul准备counter-increment属性增加计数器的值语法是,其中是counter-increment counter-increment:name value;name计数器名称,是每次增加的值(默认为)通常在需要编号的元素上设置,如或value1li h2函数counter函数检索计数器的当前值并显示通常与属性和或伪元素一起使用counter content::before::after例如,可以自动为元素添加章节编号h2::before{content:Chaptercounterchapter:;}h2嵌套计数器计数器可以嵌套使用,创建多级编号系统,如等使用函数可以生成带分CSS
1.1,
1.2,
2.1counters隔符的嵌套计数器值,如显示为格式counterssection,.
1.
3.2多列布局CSScolumn-count属性指定元素内容应分为几列例如,将内容分column-count column-count:3;为三列浏览器会自动计算每列的宽度,使各列高度尽量均匀这是创建报纸或杂志风格布局的简便方法column-width属性设置每列的理想宽度浏览器会创建尽可能多的列,每列宽度接column-width近指定值,但可能调整以填满容器可以与一起使用,兼顾列数和列column-count宽column-gap属性设置列间距默认值通常是较大的间距使列分隔更明显,有column-gap1em助于改善长文本的可读性在现代浏览器中,此属性也可用于和布局Flexbox Gridcolumn-rule属性在列之间添加分隔线这是、column-rule column-rule-width column-和的简写属性分隔线不占用空间,位于列间距的中rule-style column-rule-color间位置表格样式CSS属性描述示例值确定表格边框是分离的还是合border-collapse separate,collapse并的设置相邻单元格边框之间的距border-spacing2px,10px5px离指定表格标题的位置caption-side top,bottom定义是否显示空单元格的边框empty-cells show,hide定义表格布局算法table-layout auto,fixed设置单元格内容的垂直对齐方vertical-align top,middle,bottom式表格布局是呈现结构化数据的重要工具提供了丰富的属性来控制表格的外观和行为通过合理应用这CSS些属性,可以创建既美观又易于阅读的数据展示界面使用可以创建现代、简洁的表格设计,消除单元格之间的双重边框border-collapse:collapse zebra-(斑马条纹)技术使用选择器为偶数奇数行设置不同背景色,提高表格可striping:nth-childeven/odd/读性列表样式CSS1list-style-type属性定义列表项标记的类型对于无序列表,常用值包括(默认,实心list-style-type disc圆)、(空心圆)和(方块)对于有序列表,包括()、circle squaredecimal1,2,3()、()等lower-alpha a,b,c upper-roman I,II,III2list-style-image属性使用图像作为列表项标记语法是list-style-image list-style-image:图像大小应适中,过大可能导致布局问题当图像无法加载时,urlpath/to/image.png;会回退到指定的标记list-style-type3list-style-position属性确定列表项标记相对于列表内容的位置值(默认)使标记list-style-position outside位于内容块外;值使标记成为内容的一部分,受到内容区域的限制和影响inside简写属性4list-style是以上三个属性的简写形式语法是任何未list-style list-style:type imageposition;指定的值都会使用其默认值例如,指定了list-style:square urlmarker.png inside;所有三个属性表单样式CSS输入框样式复选框和单选按钮表单验证样式使用等选择器可以针原生的复选框和单选按钮样式有限,可以使提供了多种表单验证功能,可input[type=text]HTML5CSS对特定类型的表单元素设置样式常见的样用伪类和自定义样式创建更美观以使用和伪类设置不同状态:checked:valid:invalid式属性包括、、、的控件一种常见方法是隐藏原始控件,使的样式还可以使用选择必填字width heightpadding:required、等使用用标签和伪元素创建自定义外观,并利用段,选择可选字段这些样式能border border-radius:focus:optional伪类可以定义输入框获得焦点时的样式变化伪类控制状态变化为用户提供直观的反馈:checked打印样式CSS媒体查询打印分页控制1for2使用打印和@media print{/*page-break-before page-样式可以定义专门用于打属性控制元素前*/}break-after印的样式这些样式只在用户后的分页行为,可选值包括打印页面或预览打印时生效,、、等auto alwaysavoid不影响屏幕显示为提高打印防page-break-inside:avoid质量,通常会移除背景色、调止元素内部出现分页,适用于整字体大小和设置适当的边距表格、图表等应完整显示的内容打印样式最佳实践3打印样式应考虑黑白打印,避免依赖颜色传达信息可以使用规@page则设置页面边距对于不需要打印的元素(如导航栏、按钮),可以设置使用相对单位(如)而非像素,以适应不同打印display:none em分辨率性能优化CSS选择器优化减少重排和重绘选择器从右向左匹配避免使用通用重排()和重绘()是影CSS reflowrepaint选择器()和深层次的后代选择器,减响性能的主要因素改变元素位置或大小*少选择器的复杂度使用类选择器代替复会触发重排,改变颜色等视觉属性会触发杂的选择器组合,如比重绘批量修改,使用.menu-item nav1DOM transform更高效选择器通常是最高效的,代替,使用代替ul liID top/left opacity2但应适度使用都可减少性能消耗visibility压缩CSS避免@import在生产环境中,应使用工具如、CSSNano避免使用@import引入CSS,因为它会阻4Clean-CSS等压缩CSS文件,移除注释、塞并串行加载样式表改用多个标空白和不必要的字符,减少文件大小使link3签或将合并为一个文件另外,将媒用合并多个小图像,减少CSS CSS Sprites体查询分离到独立的文件中,使用请求对于关键,可以内联到media HTTPCSS属性有选择地加载样式,可以提高性能中,加速初始渲染HTML预处理器CSS Sass/SCSS变量嵌套规则Mixins允许使用变量存储颜色、字体等值,支持选择器嵌套,简化层次结构的表是可重用的代码块,类似于函数Sass SassMixins语法为变量示例如,使用$variable-name:value;nav{ul{margin:0;li@mixin nameparameters{...}可以在整个样式表中重用,集中管理样式会编译为定义,使用{display:inline-block;}}}@include namearguments值变量比变量更灵活,支持各调用特别适合处理浏览器前缀、Sass CSSnav ul{margin:0;}nav ulli Mixins种数据类型和作用域规则,但需要编译成符号表示网格系统等重复性代码参数可以有默认{display:inline-block;}才能使用父选择器,如值,增加灵活性CSS a{:hover{color:red;}}后处理器CSS PostCSS灵活的插件系统是基于插件构建的强大工具1PostCSSAutoprefixer2自动添加浏览器前缀以保证兼容性CSS Modules3实现模块化,防止样式冲突CSScssnano4优化和压缩代码,提升性能CSS预处理器功能5通过插件实现类似的功能Sass是一个用转换的工具,它本身并不改变,而是提供了一个插件系统,让开发者可以选择需要的功能与预处理器不同,处理的是标准或预处PostCSS JavaScript CSS CSSPostCSS CSS理器的输出,然后根据需要进行转换是最流行的插件,它根据数据库自动添加浏览器前缀,让开发者可以编写标准,而不必担心兼容性问题通过自动创建唯一的类名,Autoprefixer PostCSSCan IUse CSS CSS Modules解决了大型项目中的命名冲突问题优化文件大小,提高加载速度cssnano CSS框架介绍CSSBootstrap Tailwind CSS Bulma是最流行的框架之一,由是一个功能类优先的框架,是一个基于的现代框架,Bootstrap CSSTailwindCSSBulma FlexboxCSS开发它提供了全面的组件库、响不提供预设组件,而是提供大量低级功能类,不依赖它提供模块化组件,Twitter JavaScript应式网格系统和大量预定义样式如使用清晰易读的类名,如.bg-blue-500,.py-2,.rounded-lg.column,.is-使用类名驱动的方法,等通过组合这些类创建独特设计优点是等的特点是轻量Bootstrap primary,.card Bulma如等优点高度可定制,没有用不到的代码;缺点是级、易于学习,设计简洁现代适合寻求.container,.row,.col-md-6是开发速度快,文档完善;缺点是网站风格可能变得冗长,学习曲线较陡替代品且不需要内置HTML Bootstrap容易千篇一律的开发者JavaScript命名规范CSS(块、元素、修饰符)BEM是一种命名约定,通过创建清晰的类名结构来提高代码可维护性块()是独BEM CSSBlock立组件,如;元素()是块的一部分,用双下划线表示,如;修.cardElement.card__title饰符()表示块或元素的变体,用双连字符表示,如Modifier.card--featured(面向对象)OOCSS CSS强调分离结构和皮肤,以及分离容器和内容这种方法创建可重用的对象独OOCSS——立的视觉模块,可以在整个网站中一致应用减少了代码重复,但可能导致OOCSS HTML中包含多个类名,如div class=module theme-border clearfix(可扩展和模块化)SMACSS CSS将规则分为五类基础规则、布局规则、模块规则、状态规则和主题规则SMACSS CSS每类规则有特定的命名前缀,如表示布局,表示状态是.l-header.is-active SMACSS一个灵活的框架,专注于如何组织以适应不同规模的项目CSS(原子)Atomic CSS CSS使用单一用途的小类,每个类只设置一个样式属性,如Atomic CSS.mt-10()或()这种方法类似于margin-top:10px.flexdisplay:flex TailwindCSS的理念,减少了文件大小,但增加了的复杂性适合大型团队和需要高度CSSHTML一致性的项目和CSS ResetNormalize的作用的特点常用1CSS Reset2Normalize.css3reset.css是一组样式规则,目的是清与不同,它不是清的是最知名的CSS ResetNormalize.css ResetEric MeyerReset CSS除浏览器的默认样式,使各浏览器渲染除所有默认样式,而是保留有用的默认之一,它彻底清除所有默认样式Reset页面的起点一致通常会将所有元样式,同时修正浏览器之间的差异它另一个流行选择是对Reset ResetReloaded素的、设为,移除列更注重可用性和语义,尊重元素于更现代的方法,可以考虑使用marginpadding0HTML表项标记,统一字体大小等这种白板的默认行为更加温和,代,或两者的混合方案,如Normalize Normalize.css方法确保开发者完全控制样式,但也意码量更小,更容易维护,是现代网站开还有一些框架专用的sanitize.css味着需要从头定义所有元素样式发的常用选择,如的Reset BootstrapReboot兼容性处理CSS浏览器前缀浏览器前缀用于支持实验性或非标准特性主要前缀包括(、、新版CSS-webkit-Chrome Safari)、()、(、旧版)和()例如,Edge-moz-Firefox-ms-IE Edge-o-Opera-webkit-和现代开发中,通常使用等工具自动添加必要的前缀transition-moz-transition Autoprefixer规则@supports规则(特性查询)检测浏览器是否支持特定属性或值语法是@supports CSS@supports condition规则例如,网格布局样式{/*CSS*/}@supports display:grid{/**/}@supports not后备样式这允许优雅降级和渐进增强display:grid{/**/}库Modernizr是一个库,用于检测浏览器支持的和特性它在元素上添加Modernizr JavaScriptHTML5CSS3HTML类名,如或,使开发者可以基于特性支持应用不同的除了检测,.flexbox.no-flexbox CSSModernizr还可以选择性加载,为旧浏览器提供现代特性polyfill渐进增强与优雅降级渐进增强先为所有浏览器创建基本体验,然后为现代浏览器添加增强功能优雅降级则相反,从完整功能开始,为旧浏览器提供退化方案兼容性处理应结合这两种思想,确保网站在各种环境中都能正常工CSS作图标字体CSS图标字体是一种特殊的字体,其中字母被图标符号替代使用图标字体的主要优势是可以像处理文本一样处理图标改变大小、颜色、添加阴影等,而不会失去清晰度图标字体还减少了请求,HTTP提高了加载速度是最流行的图标字体之一,提供数千个免费图标使用方法是添加特定类名,如是的官方图标集,遵循原则Font Awesomei class=fa fa-heart/i MaterialIcons GoogleMaterial Design和等工具允许创建自定义图标字体,只包含实际需要的图标,减少文件大小IcoMoon Fontello近年来,图标因其更好的可访问性和更丰富的样式控制逐渐取代图标字体然而,图标字体在某些场景中仍有其优势,特别是当需要大量简单图标且兼容性要求高时SVG居中技巧CSS水平居中垂直居中水平垂直居中对于行内元素或文本,可以使用对于单行文本,可以设置传统方法使用绝对定位line-height position:对于块级元素,等于容器高度对于多行文本,可以text-align:center;absolute;top:50%;left:50%;可以设置并指定宽使用配合margin:0auto;vertical-align:middle;transform:translate-50%,-度使用时,可以设置或使用现代方法首选Flexbox display:table-cell;padding50%;Flexbox实现近似垂直居中使用时,display:flex;justify-content:Flexbox display:flex;justify-content:使用时,可以设置设置或center;Grid display:flex;align-items:center;align-items:center;使用时,设置使用display:grid;justify-items:center;Grid Griddisplay:grid;place-或(是center;place-items:center;display:grid;align-items:items:center;place-items和的简center;align-items justify-items写)响应式居中创建响应式居中布局时,应避免使用固定宽度和高度使用max-width而非,百分比或视口单位而非width像素结合媒体查询调整居中策略,确保在不同设备上都能正确居中和是实现响应式居中的Flexbox Grid最佳选择精灵图()CSSSprite概念和优势实现方法精灵图()是将多个小图标或图片合并到一个大实现精灵图的步骤首先,将所有小图标合并为一个大图片,CSS CSSSprite CSS图片中,然后通过的属性显示其中的可以使用在线工具如或每个图标应有足CSS background-position SpriteCow Spritebox特定部分这种技术的主要优势是减少请求数量,提高页面够的间距以防止显示相邻图标HTTP加载速度,特别是在时代HTTP/
1.1然后,为每个需要显示图标的元素设置相同的背景图片(精灵精灵图还可以减少总图片大小(因为单个大文件通常比多个小文图),但使用不同的值定位到特定图标background-position件更高效),简化版本控制(只需管理一个文件),并预加载所通常还需要设置元素的宽度和高度与目标图标一致,并使用有图标(当第一个图标加载时,所有图标都被加载)防止显示多余部分overflow:hidden新特性概览CSS3引入了大量新特性,极大扩展了网页样式的可能性其中圆角()允许创建圆角元素,无需使用图片或复杂单独控制每个角的圆角半径,甚CSS3border-radius hack至可以创建椭圆形角阴影效果包括(为元素添加阴影)和(为文本添加阴影),支持多重阴影、内阴影和各种颜色效果box-shadow text-shadow动画通过规则和属性实现,无需即可创建复杂动画可以控制动画的持续时间、速度曲线、延迟、重复次数和方向等渐变包CSS3@keyframes animationJavaScript括线性渐变()、径向渐变()和最新的锥形渐变(),可用于背景、边框等linear-gradient radial-gradient conic-gradient其他重要新特性包括多列布局、、布局、媒体查询(响应式设计基础)、变换(转换)、过渡效果、自定义字体()、背景增强(多重Flexbox Grid2D/3D@font-face背景、背景大小控制)等这些特性显著减少了对图片和的依赖JavaScript的未来CSS Houdini简介Houdini是一系列低级的总称,它们使开发者能够直接访问引擎,自定义渲染过程传统上,浏览器如何解析和应用对开发者是黑1Houdini APICSS CSS盒,让开发者能够扩展,创建之前不可能的效果,同时保持高性能Houdini CSSPaint API允许开发者使用编写绘图代码,生成图像,可用于背景、边框或任何接受图像的属性与使用2PaintAPIJavaScriptCSS图片相比,它更灵活,可以响应参数变化,创建自定义图案、渐变和复杂视觉效果Layout API让开发者能够创建自定义布局算法,如掌握图()布局、圆形布局或完全自定Layout APImasonry3义的布局系统这比现有的或更灵活,可以实现特定需求的布局,而无需复杂的或Grid FlexboxhackJavaScriptProperties andValues API扩展了自定义属性(变量)的功能,增加类型Properties andValues APICSS4检查、默认值、继承控制等这使自定义属性更接近原生属性,提高了使用CSS自定义属性构建组件和主题系统的能力调试工具CSS浏览器开发者工具验证器CSSCSS Linters现代浏览器内置的开发者工具是调试的验证服务()可以检和等工具可以分析CSS W3C CSSValidator StylelintCSSLintCSS主要工具、查代码是否符合标准,识别语法代码,发现潜在问题、错误和不良实践它Chrome DevToolsFirefox CSSW3C开发者工具、和错误和潜在问题虽然有些现代特性可们可以检查命名约定、强制代码风格一致性、Safari WebInspector CSS开发人员工具都提供类似功能实时能被标记为警告(因为是实验性质),但验识别未使用的选择器、发现冗余规则等这Edge编辑、查看计算样式、检查盒模型、模证器仍是确保代码质量的重要工具,特别是些工具通常可以集成到编辑器和构建过程中CSS拟不同设备、分析继承关系等在大型项目中CSS最佳实践CSS模块化1CSS将分解为功能明确的模块,如布局、导航、表单等使用一致的命名约定(如)和CSS BEM文件组织,减少样式冲突和提高可维护性考虑使用或解决方案,CSS ModulesCSS-in-JS确保样式的作用域限制在特定组件内避免过度特定性2避免不必要的高特定性选择器,如过高的特定性使覆盖样式变#header div.menu ulli a得困难,导致的滥用使用类选择器而非或元素选择器,保持选择器简短而有!important ID针对性使用简写属性3尽可能使用简写属性,如可简写为margin:10px20px10px20px;margin:10px这减少了代码量,提高了可读性但在需要覆盖特定值而保留其他值时,应使用具体20px;属性(如)以避免意外重置margin-top注释和文档4为复杂的代码添加清晰的注释,说明其用途和作用范围使用文档块注释说明模块的整体CSS结构,使用行内注释解释特定决策考虑使用或等工具创建样式指南,帮助KSS Storybook团队理解和使用组件CSS课程总结与展望掌握前沿技术不断探索新特性和工具1CSS实践与反思2通过项目应用所学知识并总结经验进阶概念3深入理解响应式设计、动画和布局系统核心基础4掌握选择器、盒模型和布局等基础知识在这门样式课程中,我们从基础概念开始,系统地学习了的各个方面,包括选择器、盒模型、布局技术、响应式设计等我们探讨了的发展历史,从早期的CSSCSSCSS到现代的模块化规范,见证了网页样式技术的巨大进步CSS1CSS3在前端开发中的重要性不言而喻它不仅是网页美观的保证,也是用户体验的关键因素随着网页应用日益复杂,技术也在不断发展,新特性如CSSCSSContainer、等正在改变我们编写样式的方式持续学习和实践是掌握的关键希望这门课程为您的前端开发之旅打下坚实基础!Queries CascadeLayers CSS。
个人认证
优秀文档
获得点赞 0