html&css

HTML&CSS案例---咖啡店 HTML&CSS案例—咖啡店 最终页面效果 页面结构为:最上面header是一个头部,主要是一张图片;下面的nav是一个导航栏,包含五个链接;下面是主体部分,左侧的上面是一个表格,下面是四张图片,当鼠标放到图片上会有一个放大的效果,右侧有4个div是四种咖啡的详细介绍;最下面有一个脚本。具体代码如下; HTML代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &l 阅读详情

html&css

01_introduce

实体

需要在网页中书写特殊的符号时,就要使用html中的实体(转义字符)。实体的语法:&实体的名字;

  • &nbsp; 空格
  • &gt; 大于号
  • &lt; 小于号
  • &copy; 版权符号
meta

meta主要是用于设置网页中的一些元数据,元数据不是给用户看的。

charset:指定网页的字符集

name:指定的数据的名称

content:指定的数据的内容

  • keywords:网站的关键字,可以指定很多个,关键字之间用,隔开。(比如在网页上 搜索“购物”,会出现京东的网页,就是说京东这个网页包含“购物”这个关键字)
  • description:指定网站的描述
  • title:这个标签的内容会作为搜索结果的超链接上的文字显示

这个表示该页面会在3秒后跳转到百度页面(用得少

    <meta http-equiv="refresh" content="3;url=http://www.baidu.com">
语义化标签

在网页中html专门用来负责网页的结构,所以在使用html标签时,应该关注的是标签的语义,而不是它的样式。

  • 标题标签:h1—h6,一共六级标题,重要性一次递减。h1在网页中的重要性仅次于title标签,一般情况下只有一个。
  • 在页面中独占一行的元素称为块元素。标题元素、p都是块元素。
  • p标签表示页面中的一个段落。
  • hgroup标签用来为标题分组,可以将一组相关的标题同时放到hgroup中。
  • 在页面中不会独占一行的元素叫行内元素。em标签用于表示语音语调的一个加重;strong表示强调,重要内容。都是行内元素。
  • blockquote表示一个长引用,q表示一个短引用。
  • br表示一个换行。

块元素:在网页中一般通过块元素对页面进行布局;行内元素:主要用来包裹文字。一般情况下,会在块元素中放行内元素,但不会在行内元素中放块元素。块元素基本上什么都能放,但p元素中不能放任何的块元素。(浏览器在解析网页时,会自动对网页中不符合规范的内容进行修正)

布局标签(结构化标签)

  • header:网页的头部
  • main:网页的主体部分(一个页面只有一个main)
  • footer:网页的底部
  • nav:网页中的导航
  • aside:和主体相关的其他内容(侧边栏
  • section:表示一个独立的区块,上边的标签都不能表示时就使用section。
  • div:没有语义,就用来表示一个区块,目前还是主要的布局元素。
  • span:行内元素,没有任何语义,一般用于在网页中选中文字。
列表

共有三种列表形式:

  • 无序列表:使用ul来创建无序列表,使用li来表示列表项。
  • 有序列表:ol来创建。
  • 定义列表:dl来创建,dt表示定义的内容,dd来对内容进行解释说明。
  • 列表之间可以相互嵌套。
超链接

超链接可以让我们从一个页面跳转到另一个页面,或者是当前页面的其他位置。

使用a来定义超链接,超链接也是一个行内元素,在a标签中可以嵌套除它自身外的元素。

  • href:指定跳转的目标路径。它的值可以是一个外部网站的地址,也可以写内部页面的地址。

    <a href="http://www.baidu.com">超链接</a>
    
    • 可以直接将href设置为#,这样点击超链接之后页面不会发生跳转,而是转到当前页面的顶部。
    • id:唯一不重复。id属性就是元素的唯一标识,同一个页面中不能出现重复的id。
    • 可以跳转到页面的指定位置,只需将href属性设置为#目标元素的id值。
  • 当我们需要跳转一个服务器内部的页面时,一般都会使用相对路径。相对路径都会使用./或…/开头。

    • ./ 当前文件所在的目录。(前面什么都不写也默认是./
    • …/ 当前文件的上一级目录。
  • target:用来指定超链接打开的位置。

    • _self:默认值,在当前页面打开超链接。
    • _blank:在一个新的页面打开。
  • 在开发中可以将#作为超链接的路径的占位符使用,可以使用javascript:;来作为href的属性,点击什么都不会发生。

图片标签

图片标签用于向当前页面中引入一个外部图片,使用img标签来引入外部图片,img标签是一个自结束标签。img这种元素属于替换元素(基于块和行内元素之间,具有两种元素的特点)

  • src:指定的是外部图片的路径(路径规则一样)
  • alt:图片的描述,描述默认情况下不会显示,有些浏览器会在图片无法加载时显示,搜索引擎会根据alt中的内容来识别图片。
  • width:宽度(单位是像素
  • height:高度
    • 宽、高如果只修改一下,则另一个会等比例缩放
    • ps:一般在pc端,不建议修改图片的大小,需要多大的图片就裁多大。但是在移动端,经常需要对图片进行缩放(大图缩小)

图片的格式:

  • jpg:支持的颜色比较丰富,不支持透明效果,不支持动图。一般用来显示照片。
  • gif:支持的颜色比较少,支持简单透明,支持动态。一般是颜色单一的图片、动图。
  • png:支持的颜色丰富,支持复杂透明,不支持动态。一般是颜色丰富、复杂透明图片(专为网页而生)。
  • webp:谷歌新推出的专门用来表示网页中的图片的一种格式,它具备其他图片格式的所有优点,而且文件特别小。缺点:兼容性不好。
  • base64:将图片使用base64进行编码,可以直接将图片转换成字符,通过字符的形式来引入图片。一般都是一些需要和网页一起加载的图片才会使用base64。
  • 效果一样用小的,效果不一样用效果好的。
内联框架

内联框架:用于向当前页面中引入一个其他的页面。

  • src:指定要引入的网页的路径。
  • frameborder:指定内联框架的边缘。
音视频

audio:用来向页面中引入一个外部的音频文件。

  • 音视频文件引入时,默认情况下不允许用户自己控制播放停止。
  • controls:是否允许用户控制播放。
  • autoplay:音频文件是否自动播放。(如果设置了autoplay,则音乐在打开页面时会自动播放,但是目前来说大多数浏览器都不会自动播放)
  • loop:是否循环播放。

除了通过src来指定外部文件的路径以外,还可以通过source来指定文件。

video:用来向网页引入视频。使用方式基本与audio一样。

02_css

css简介

网页分为三个部分:结构(html)、表现(css)、行为(js)。

css:层叠样式表,用来设置网页中元素的样式。

使用css来修改元素的样式:

  • 第一种方式(内联样式、行内样式):在标签内通过style来设置元素的样式。缺点:样式只能对一个标签生效,如果希望影响到多个元素必须要在每个元素中复制一遍,并且当样式发生变化时,维护很麻烦。ps:开发时绝对不要使用内联样式。

        <p style="color: green; font-size: 50px;">夏天结束了</p>
    
  • 第二种(内部样式表):将样式编写到head中的style标签里,然后通过css的选择器来选中元素并为其设置各种样式。好处:可以同时为多个标签设置样式,并且修改时很方便,也更加方便对样式进行复用。缺点:只能对一个网页起作用,不能跨页面进行复用。

    <style>
            p{
                color: aquamarine;
                font-size: 30px;
            }
        </style>
    
  • 第三种(外部样式表):可以将css样式编写到一个外部的css中,在head里通过link标签来引入外部的css文件。想要使用就引用,使样式可以在不同页面之间进行复用。将央视编写到外部css文件中,可以使用到浏览器的缓存机制,从而加快网页的加载机制,提高用户体验。(最佳实践)

        <link rel="stylesheet" href="style.css">
    
css语法

ps:注意区分html和css的注释。html是<!–>,css是/**/。

css的基本语法:

  • 选择器:通过选择器可以选中页面中的制定元素。
  • 声明块:通过声明块来指定要为元素设置的样式。声明块由一个一个的声明构成,声明是一个名值对结构,一个样式名对应一个样式值,名和值之间以:连接,以;结尾。
选择器
常用选择器

元素选择器:

  • 作用:根据标签名来选中指定的元素。
  • 语法:标签名{}
  • 例子:p{} h1{} div{}

id选择器:

  • 作用:根据元素的id属性值选中一个元素。
  • 语法:#id属性值{}
  • 例子:#box{} #reader{}

class是一个标签的属性,它和id类似,不同的是class可以重复使用,就可以通过class属性来对元素分组,可以同时为一个元素指定多个class属性,多个class使用空格隔开。

class(类)选择器:

  • 作用:根据元素的class属性值选中一组元素。
  • 语法:.class属性值{}

通配选择器:

  • 作用:选中页面的所有元素。
  • 语法:*{}
复合选择器

交集选择器:

  • 作用:选中同时复合多个条件的元素。
  • 语法:选择器1选择器2…选择器n{}
  • ps:如果有元素选择器,必须使用它开头。

选择器分组(并集选择器):

  • 作用:同时选择多个选择器对应的元素。
  • 语法:选择器1, 选择器2, …{}
关系选择器

关系的分类:

  • 父元素:直接包含子元素的元素。
  • 子元素:直接被父元素包含的元素。
  • 祖先元素:直接或间接包含后代元素。一个元素的父元素也是它的祖先元素。
  • 后代元素:直接或间接被祖先元素包含的元素。子元素也是后代元素。
  • 兄弟元素:拥有相同父元素的元素。

子元素选择器:

  • 作用:选中指定父元素的指定子元素。
  • 语法:父元素>子元素{}

后代元素选择器:

  • 作用:选中指定元素内的指定后代元素。
  • 语法:祖先 后代{}

兄弟选择器:

  • 作用:选择下一个兄弟。语法:前一个 + 后一个{}
  • 作用2:选择下边所有的兄弟。语法:前一个 ~ 后一个{}
属性选择器
  • [属性名]:选择含有指定属性的元素。
  • [属性名=属性值]:选择含有指定属性和属性值的元素。
  • [属性名^=属性值]:选择属性值以指定值开头的元素。
  • [属性名$=属性值]:选择属性值以指定值结尾的元素。
  • [属性名*=属性值]:选择属性值中含有某值的元素。
伪类选择器

伪类(不存在的类,特殊的类):用来描述一个元素的特殊状态。比如:第一个子元素、被点击的元素、鼠标移入的元素…

伪类一般情况下都是:开头

以下三个伪类都是根据所有的子元素进行排序。

  • :first-child 第一个子元素
  • :last-child 最后一个子元素
  • :nth-child 选中第n个子元素
    • n:第n个 n的范围是0到正无穷
    • 2n或even:表示选中偶数位的元素
    • 2n+1或odd:奇数位

以下三个伪类的功能和上面三个相似,不同点:它们是在同类型元素中进行排序。

  • :first-of-type

  • :last-of-type

  • :nth-of-type

否定伪类:将符合条件的元素从选择器中去除。

  • :not()
超链接的伪类

超链接的状态:1.访问过;2.访问过。

这两个只能a使用。

  • :link 用来表示没访问过的链接(正常的链接)
  • :visited 用来表示访问过的链接
    • 隐私的原因,visited只能修改链接的颜色。

元素都可以用的:

  • :hover 用来表示鼠标移入的状态
  • :active 用来表示鼠标点击
伪元素

伪元素:表示页面中一些特殊的并不真实存在的元素(特殊位置)

伪元素使用::开头

  • ::first-letter 表示第一个字母
  • ::first-line 表示第一行
  • ::selection 表示选中的内容
  • ::before 元素的开始
  • ::after 元素的最后
    • before和after必须结合content属性来使用
样式的继承

样式的继承:为一个元素设置的样式同时也会应用到它的后代元素上。

继承是发生在祖先后代之间的。继承的设计是为了开发,利用继承可以将通用的样式设置到祖先元素,这样只需要设置一次即可让所有的元素都具有该样式。

ps:**并不是所有的样式都会被继承。**例如:背景相关的、布局相关等的这些样式都不会被继承。

选择器的权重

样式的冲突:当我们通过不同的选择器,选中相同的元素,并且为相同的样式设置不同的值时,此时就发生了样式的冲突。

发生样式冲突,应用哪个样式由选择器的权重(优先级)决定。

选择器的权重:

  • 内联样式(1,0,0,0)>id选择器(0,1,0,0)>类和伪类选择器(0,0,1,0)>元素选择器(0,0,0,1)>通配选择器(0,0,0,0)>继承的样式(没有优先级)。
  • 比较优先级时,需要将所有的选择器的优先级进行相加计算,最后优先级越高,则越优先显示。(分组选择器是单独计算的)
  • 选择器的累加不会超过其最大的数量级,类选择器再高也不会超过id选择器。
  • 如果优先级计算后相同,此时则优先使用靠下的样式。

可以在某一个样式的后面添加!important,则此时该样式会获取到最高的优先级,甚至超过内联样式。ps:开发时慎用。

各种单位

长度单位:

  • 像素:
    • 屏幕(显示器)实际上是由一个一个的小点点构成的。
    • 不同屏幕的像素大小是不同的。像素越小的屏幕显示的效果越清晰,所以同样的200px在不同的设备下显示效果不一样。
  • 百分比:
    • 也可以将属性值设置为相对于其父元素属性的百分比。
    • 设置百分比可以使子元素随父元素的改变而改变。
  • em:
    • 相对于本身元素的字体大小来计算的,根据字体大小的改变而改变。
    • 1em=1font-size。
  • rem:
    • 相对于根元素(html的)的字体大小来计算。

颜色单位:

  • 在css可以直接使用颜色名来设置各种颜色,但是在css中直接使用颜色名不方便。
  • RGB值:通过三种颜色的不同浓度来调配出不同的颜色。
    • Red、Green、Blue
    • 每一种颜色的范围在0-255(0%-100%)之间
    • 语法:RGB(red,green,blue)
  • RGBA:在RGB的基础上增加了一个A表示不透明度。
    • A的1表示完全不透明,0表示完全透明。
  • 十六进制的RGB值:
    • 语法:#红色绿色蓝色
    • 颜色浓度通过00-ff
    • 如果颜色两位两位重复可以进行简写,例如:#bbffaa可以简写成#bfa
  • HSL值(了解):
    • H:色相(0-360)
    • S:饱和度 颜色的浓度(0%-100%)
    • L:亮度 颜色的亮度(0%-100%)

03_layout

文档流

网页是一个多层的结构,通过css分别给每一层设置样式,用户只能看见最顶一层,在这些层中最底下的一层称为文档流。文档流是网页的基础,我们所创建的元素默认都是在文档流中进行排列。对于元素主要有两个状态:在文档流中;不在文档流中(脱离)。

元素在文档流中的特点:

  • 块元素
    • 块元素在页面中独占一行,自上向下垂直排列
    • 默认宽度是父元素的全部(会把父元素撑满)
    • 默认高度是被内容撑开(子元素)
  • 行内元素
    • 行内元素不会独占一行,只占自身的大小,在页面中左向右水平排列,如果一行之中不会容纳下所有的行内元素,则元素会换到第二行继续自左向右排列(书写习惯一致)
    • 默认的宽度和高度是被内容撑开的
盒模型

css将页面中的所有元素都设置成了一个矩形的盒子,将元素设置成盒子后,对页面的布局就变成将不同的盒子摆放到不同的位置。

每个盒子都由以下几个部分组成:

一个盒子的可见框的大小,由内容区、内边距、边框共同决定。

  • content:元素中的所有的子元素和文本内容都是在内容区中排列。

    • 内容区的大小由width、height两个属性来设置。
    • width的值默认是auto。
  • border:属于盒子的边缘,边框里边属于盒子内部,出了边框都是盒子的外部。边框的大小会影响整个盒子的大小。

    • border-width:可以不写,一般默认都是3个像素,但最好还是写
      • 四个值:上 右 下 左**(顺时针)**
      • 三个值:上 左右 下
      • 两个值:上下 左右
      • 一个值:上下左右
      • 除了border-width还有一组border-xxx-width,xxx可以是top、right、bottom、left,用来单独指定某一个边的宽度。(下面两个也类似
    • border-color:指定边框的颜色,可以分别指定四个边框的颜色,规则一样
      • 也可以省略不写,省略了就自动使用color的颜色。
    • border-style:边框的样式,默认值是none,表示没有边框
      • solid:实线
      • dotted:点状虚线
      • dashed:虚线
      • double:双线
    • border的简写属性:通过该属性可以同时设置边框所有的相关样式,并且没有顺序要求。例如:border:solid 10px green; border-xxx也适用,只设置某一边的样式。
  • padding(内边距):内容区和边框之间的距离

    • 内边距的设置会影响到盒子的大小
    • 背景颜色会延伸到内边距上
    • 内边距的简写属性,可以同时指定四个方向,规则一样
  • margin(外边距):不会影响可见框的大小,会影响盒子实际占用空间

    • 元素的页面中是按照自左向右的顺序排列的,所以默认情况下如果我们设置的左和上外边框则会移动元素自身,而设置下和右外边框会移动其他元素。
    • margin-top:设置一个正值,元素向下移动
    • marin-right:默认情况下设置它不会产生任何效果
    • margin-bottom:设置一个正值,其下边的元素会向下移动
    • margin-left:设置一个正值,元素会向右移动
    • margin也可以设置负值,如果设置负值元素会向相反的方向移动
    • 简写属性的规则一样
盒子的水平布局

元素在其父元素中水平方向的位置由以下几个属性共同决定:margin-left、border-left、padding-left、width、padding-right、border-right、margin-right。一个元素在其父元素中,水平布局必须满足以下的等式:margin-left+border-left+padding-left+width+padding-right+border-right+margin-right=其父元素内容区的宽度。如果相加结果使等式不成立,则称为过度约束,等式会自动调整。调整的情况:

  • 如果七个值中没有auto的情况,浏览器会自动调整margin-right值使得等式成立。

  • 如果七个值中有三个值(width、margin-left、margin-right)和设置为auto:

    • 如果某个值为auto,则会自动调整为auto的那个值使得等式成立。
    • 如果将width和一侧外边距设置成auto,则宽度会调整到最大,设置为auto的外边距自动为0。
    • 如果三个值都是auto,则外边距都是0,宽度最大。
    • 如果将两个外边距设置为auto,宽度固定值,则会将外边距设置为相同的值。我们可以利用这个特点使一个元素在其父元素中水平居中。
      • 示例:width:xxxpx; margin:0 auto;
盒子的垂直布局

默认情况下父元素的高度被元素撑开。

子元素是在父元素的内容区中排列的。如果子元素的大小超过了父元素,则子元素会从父元素中溢出。使用overflow属性来设置父元素如何处理溢出的子元素。(也有overflow-x,overflow-y,单独设置水平、垂直的滚动条

  • visible:默认值,子元素会从父元素中溢出,在父元素外部的位置显示。
  • hidden:溢出内容会被裁剪不会显示。
  • scroll:生成两个滚动条,通过滚动条来查看完整的内容。
  • auto:根据需要生成滚动条。
外边距的折叠

垂直外边距的折叠:相邻的垂直方向外边距会发生重叠现象。

  • 兄弟元素:
    • 兄弟元素间的相邻垂直外边距会取两者之间的较大值(两者都是正值)
    • 特殊情况:
      • 一正一负,则取两者的和。
      • 都是负值,则取绝对值较大的。
    • 兄弟元素之间的外边距重叠,对于开发是有利的,不需要处理。
  • 父子元素:
    • 父子元素间相邻外边距,子元素的会传递给父元素(上外边距)
    • 这种折叠会影响页面的布局,必须处理。
行内元素的盒模型
  • 行内元素不支持设置width和height。

  • 可以设置padding,垂直方向的padding不会影响页面的布局。

  • 可以设置border,垂直方向的border不会影响布局。

  • 可以设置margin,垂直方向的margin不会影响布局。

display:用来设置元素显示的类型。

  • inline:将元素设置为行内元素。
  • block:设置为块元素。
  • inline-block:设置成行内块元素。
    • 行内块:既可以设置width和height,又不会独占一行。
  • table:设置一个表格。
  • none:元素不在页面中显示,可以隐藏元素。(不占页面的位置

visibility:用来设置元素的显示状态。

  • visible:默认值,元素在页面中正常显示。
  • hidden:元素在页面中隐藏,不显示,但是依然占据页面的位置。
浏览器的默认样式

通常情况下,浏览器会为元素设置一些默认样式。默认样式的存在会影响到页面的布局,通常情况下,我们必须要去除浏览器的默认样式。(pc端的页面)

对于复杂页面一个一个去处理,对于简单的页面可以统一去除margin、padding。

*{
  margin:0;
  padding:0;
}

可以直接引入别人写的css。重置样式表:专门用来对浏览器的样式进行重置的。

  • reset.css:直接去除了浏览器的默认模式
  • normalize.css:对默认样式进行了统一
盒子的大小

默认情况下,盒子可见框的大小由内容区、内边框和边框共同决定。

box-sizing:用来设置盒子尺寸的计算方式(设置width和height的作用)

  • content-box:默认值,宽度和高度用来设置内容区的大小。
  • border-box:宽度和高度用来设置整个盒子可见框的大小。
轮廓阴影和圆角

outline:用来设置元素的轮廓线,用法和border一样。与border不同的是:轮廓不会影响到可见框的大小。

box-shadow:用来设置元素的阴影效果,也不会影响到页面布局。

  • 第一个值 水平偏移量:设置阴影的水平位置。正值向右移动,负值向左移动。
  • 第二个值 垂直偏移量:设置阴影的水平位置。正值向下移动,负值向上移动。
  • 第三个值 阴影的模糊半径
  • 第四个值 阴影的颜色

border-radius:用来设置圆角。圆角设置的是圆的半径大小,半径越大弧度更大。

  • 可以分别指定四个角的圆角:左上 右上 右下 左下
  • 三个值:左上 右上右下 左下
  • 两个值:左上右下 右上左下(对角
  • 要在两个方向上设置不同的px,中间用/隔开。

border-radius: 50%; 将元素设置成一个圆形。

04_float

浮动的简介

通过浮动可以使一个元素向其父元素的左侧或右侧移动,使用float来设置元素的浮动。

  • none:默认值,元素不浮动。
  • left:元素向左浮动。
  • right:元素向右浮动。

ps:

  • 元素设置浮动(只要不是none)以后,水平布局的等式就不需要强制成立。
  • 元素设置浮动以后,会完全从文档流中脱离,不再占用文档流的位置,所以元素下边的还在文档流中的元素会自动向上移动。

浮动的特点:

  • 浮动元素会完全脱离文档流,不再占据文档流中的位置。
  • 设置浮动以后元素会向父元素的左侧或右侧移动。
  • 浮动元素默认不会从父元素中移出。
  • 浮动元素向左或向右移动,不会超过它前边的其他浮动元素。
  • 如果浮动元素的上边是一个没有浮动的块元素,则浮动元素无法上移。
  • 浮动元素不会超过它上边的浮动的兄弟元素,最多就是和它一样高。

简单总结:浮动目前来讲它的主要作用是让页面中的元素可以水平排列,通过浮动可以制作一些水平方向的布局。

浮动的特点

浮动元素不会盖住文字,文字会自动环绕在浮动元素的周围,所以我们可以利用浮动来设置文字环绕图片的效果。

元素设置浮动以后会从文档流中脱离,从文档流脱离后元素的一些特点也会发生变化。脱离文档流的特点:

  • 块元素:
    • 不会独占页面的一行。
    • 宽度和高度默认被内容撑开。
  • 行内元素:
    • 行内元素脱离文档流以后就会变成块元素,特点和块元素一样。
高度塌陷和BFC

高度塌陷的问题:在浮动布局中,父元素的高度是被子元素撑开的。当子元素浮动后,其会完全脱离文档流,子元素从文档流中脱离,将会无法撑起父元素的高度,导致父元素的高度丢失。父元素高度丢失以后,其下的元素会自动上移,导致页面的布局混乱。

BFC(块级格式化环境):是一个css的一个隐含的属性,可以为一个元素开启BFC,开启BFC该元素会变成一个独立的布局区域。元素开启BFC后的特点:

  • 开启BFC的元素不会被浮动元素所覆盖。
  • 开启BFC的元素子元素和父元素外边距不会重叠。
  • 开启BFC的元素可以包含浮动的子元素。

可以通过一些特殊方式来开启元素的BFC(多多少少都有副作用:

  • 设置元素的浮动。(不推荐
  • 将元素设置成行内块元素。(不推荐
  • 将元素的overflow设置一个非visible的值
    • 常用的方式:为元素设置overflow:hidden 开启BFC,以其可以浮动。(副作用较小
clear

如果我们不希望某个元素因为其他元素浮动的影响而改变位置,可以通过clear属性来清除浮动元素对当前元素所产生的影响。

clear:清除浮动元素对当前元素所产生的影响。

  • left:清除左侧浮动元素对当前元素所产生的影响。
  • right:清除右侧浮动元素对当前元素所产生的影响。
  • both:清除两侧中最大影响的那侧。

原理:设置清楚浮动以后,浏览器会自动为元素添加一个上外边距,以使其位置不受其他元素的影响。

使用after伪类解决高度塌陷
/*在盒子后面添加一个伪元素来撑起父元素的高度*/
.bax::after{
    content:'';
    display:block;
    clear:both;
}
clearfix

解决外边距重叠和高度塌陷的问题:

.clearfix::before,
.clearfix::after{
     content:'';
     display:table; /*解决外边距重叠*/
     clear:both; /*解决高度塌陷*/
}

05_position

相对定位

定位:是一种更加高级的布局手段。通过定位可以将元素摆放到页面的任意位置,使用position来设置定位。

  • static:默认值,元素是静止的没有开启定位。
  • relative:开启相对定位。
  • absolute:开启绝对定位。
  • fixed:开启固定定位。
  • sticky:开启粘滞定位。

相对定位:当元素的position设置成relative则表示开启了元素的相对定位。

相对定位的特点:

  • 开启定位之后,如果没设置偏移量,元素不会发生变化。
  • 相对定位是参照于元素在文档流中的位置进行定位的。
  • 相对定位会提升元素的层级。
  • 相对定位不会使元素脱离文档流,不会改变元素的性质(块还是块,行内还是行内)。

偏移量(offset):当元素开启定位之后,可以通过偏移量来设置元素的位置。

  • top:定位元素和定位位置上边的距离。
  • bottom:定位元素和定位位置下边的距离。(定位元素垂直方向的位置由top、bottom两个属性来控制,通常情况下只使用其中一个。)
  • left:定位元素和定位位置左边的距离。
  • right:定位元素和定位位置右边的距离。(定位元素水平方向的位置由left、right两个属性来控制,通常情况下只使用其中一个。)
绝对定位

当元素的position设置为absolute时,则开启了元素的绝对定位。

绝对定位的特点:

  • 如果不设置偏移量,元素的位置不会发生变化。
  • 元素会从文档流中脱离。
  • 绝对定位会改变元素的性质,行内变成块,块的宽高被内容撑开。
  • 会使元素提高一个层级。
  • 绝对定位是相对于其包含块进行定位的。

包含块:

  • 正常情况下:是离当前元素最近的祖先块元素。
  • 开启绝对定位情况下:离当前元素最近的开启了定位的祖先块元素。如果所有的祖先元素都没有开启定位,则根元素就是它的包含块。

当开启绝对定位之后:

水平方向的布局等式就需要添加left和right两个值,此时规则和之前一样只是多添加两个值。当发生过度约束:

  • 如果9个值没有auto,则自动调整right使其等式成立。
  • 如果有auto,则自动调整auto的值使其等式成立。
    • 可设置auto的值:margin、width、left、right。
    • left、right的默认值时auto,如果不知道left和right,则当等式不满足时,会自动调整这两个值。

垂直方向布局的等式也必须满足:top+margin-top/bottom+padding-top/bottom+border-top/bottom+height=包含块的高度。

固定定位

当元素的position设置为fixed时,则开启了元素的固定定位。固定定位也是一种绝对定位,所以大部分的特点和绝对定位一样。唯一不同的是固定定位永远参照浏览器的视口进行定位。固定定位的元素不会随网页的滚动而滚动。

粘滞定位

当元素的position设置为sticky时,则开启了元素的粘滞定位。

粘滞定位和相对定位的特点基本一致,不同的是粘滞定位可以在元素到达某个位置时将其固定。

兼容性不好,老版本的一些浏览器不支持。

元素的层级

对于开启了定位元素,可以通过z-index属性来指定元素的层级。

  • z-index需要一个整数作为参数,值越大元素的层级越高,元素的层级越高就越优先显示。
  • 如果元素的层级一样,就优先显示靠下的元素。
  • 祖先的元素的层级再高也不会盖住后代元素。

06_font&background

行高

行高指的是文字占有的实际高度,可以通过line-height来设置行高。

  • 行高可以直接指定一个大小。
  • 可以直接为行高设置一个整数:
    • 如果是一个整数的话,行高将会是字体的指定的倍数。
  • 还用来设置文字的行间距。行间距=行高-字体大小。

字体框就是字体存在的格子,设置font-size实际上就是在设置字体框的高度。

行高会在字体框的上下平均分配,可以将行高设置成和高度一样的值,就可以使得单行文字在一个元素中垂直居中。

字体的简写属性

font可以设置字体相关的所有属性。语法:

  • font: 字体大小/行高 字体族
  • 行高可以省略不写,如果不写使用默认值。

font-weight:字重 字体的加粗

  • nomal:默认值,不加粗。
  • bold:加粗。
  • 100-900 :九个级别(没什么用)。

font-style:字体的风格。

  • normal:默认值,正常的。
  • italic:斜体的。
文本

text-align:文本的水平对齐。

  • left:左侧对齐。
  • right:右侧对齐。
  • center:居中对齐。
  • justify:两端对齐。

vertical-align:设置元素垂直对齐。

  • baseline:默认值,基线对齐。
  • top:顶部对齐。
  • bottom:底部对齐。
  • middle:居中对齐。

text-decoration:设置文本修饰。

  • none
  • underline:下划线
  • line-through:删除线
  • overline:上划线

white-space:设置网页如何处理空白。

  • normal:正常
  • nowrap:不换行
  • pre:保留空白

07_HTML

表格的简介

在网页中我们需要使用表格来表示一些格式化数据,通过table标签来创建一个表格。在table中使用tr表示表格中的一行,有几个tr就有几行。在tr中使用td表示一个单元格,有几个td就有几个单元格。

colspan:横向的合并单元格。

rowspan:纵向的合并单元格。

可以将一个表格分为三个部分:thead、tbody、tfoot。th:表示头部的单元格。

表格的样式

border-spacing:指定边框之间的距离。

border-collapse:设置边框的合并。

如果表格中没有使用tbody而是直接使用tr,那么浏览器会自动创建一个tbody,并且将tr全都放到tbody中,tr不是table的子元素。

默认情况下,元素在td中是垂直居中的,可以通过vertical-align来设置。

将元素设置为单元格 td:display: table-cell;(可以用vertical-align: middle;来将元素放在中间)

表单

网页中的表单:用于将本地的数据提交给远程的服务器,使用form标签来创建一个表单。

<form action="">
        文本框<input type="text" name="username">
        <br><br>
        
        密码框<input type="password" name="password">
        <br><br>

        <!-- 
            像这种选择框,必须指定一个value属性,value属性会作为用户填写的值传递给服务器
            checked 可以将单选按钮设置为默认选中
         -->
        单选按钮<input type="radio" name="hello" value="a">
               <input type="radio" name="hello" value="b">   
        <br><br>

        <!-- 
            多选框
         -->
        多选框<input type="checkbox" name="test" value="1">
               <input type="checkbox" name="test" value="2">
               <input type="checkbox" name="test" value="3" checked>     
        <br><br>

        <!-- 下拉列表 -->
        <select name="hi" id="">
            <option value="i">选项1</option>
            <option selected value="ii">选项2</option>
            <option value="iii">选项3</option>
        </select>
        <br><br>

        <input type="submit" value="注册">
    </form>
  • action:表单要提交的服务器地址。
  • ps:数据要想提交到服务器中,必须要为元素指定一个name。
<form action="">
        <input type="submit">

        <!-- autocomplete="off" 关闭自动补全 -->
        <input type="text" name="username" autocomplete="off">

        <!-- readonly:将表单项设置成只读,数据会提交 
             disabled:将表单项设置为禁用,数据不会提交
             autofocus:设置表单项自动获取焦点
        -->
        <input type="text" name="a" value="hi" readonly>

        <!-- 重置按钮 -->
        <input type="reset">
        <input type="button" value="按钮">

        <!-- 只是一个简单的按钮 -->
        <button type="submit">提交</button>
        <button type="reset">重置</button>
        <button type="button">按钮</button>

        <!-- email格式 格式不对会有提示 -->
        <input type="email">
    </form>
HTML&CSS实验(5) HTML&CSS实验(5):学习颜色、字体、文本格式化和盒模型的样式定义 阅读详情

相关推荐

深入学习HTML&CSS:配套源代码详解

本文还有配套的精品资源,点击获取 简介:本书《Head First HTML&CSS第二版配套源代码》专为初学者设计,通过图像和互动示例,以幽默语言教授HTML和CSS的基础与高级概念。源代码文件提供实践中学习的机会,包含所有示例代码,帮助理解HTML文档结构、CSS样式和布局控制,以及响应式设计等。这份学习资源旨在使初学者能够通过理论与实践相结合的方式,掌握网页设...

weixin_42462474的博客 791

触发器系列(1)Trigger

Style 直ui过来就是 风格 样式,简单来说,就是一种对属性值的批处理,类似于Html的CSS,可以快速的设置一系列属性值到UI元素。 构成Style 的两种元素是Style 和Trigger Style类帮助我们设置控件的静态外观风格  Trigger类 则帮助我们设置控件的行为风格     4:            5:                6:

水镜 1582

css-triggers, 一个引用CSS属性的呈现影响的参考.zip

css-triggers, 一个引用CSS属性的呈现影响的参考 CSS触发器告诉你通过改变给定的CSS属性会触发什么。在本地运行应用程序克隆项目。以英镑为单位运行 npm install 触发器。以英镑的css触发运行 gulp,以生成一个生成。运行 node server.js转到

终极指南:如何使用Akagi雀魂AI辅助提升你的麻将技术

想在雀魂对局中获得实时AI分析与策略指导吗?Akagi是一个开源的雀魂AI辅助工具,通过深度学习技术为玩家提供从牌局解读到决策建议的全流程支持,让每一局都成为提升麻将技艺的实战课堂。这个强大的工具能够实时分析你的对局,给出专业的打牌建议,帮助你从新手快速成长为麻将高手。 ## 🎯 项目概述:你的智能麻将教练系统 Akagi是一个专为雀魂、天鳳、麻雀一番街、天月麻將等主流日麻平台设计的实时AI

gitblog_00098的博客 463

微带天线理论学习笔记(1)

微带天线的概念是由Deschamps于1953年提出来的,它是在一块厚度远小于工作波长的介质基片的一面敷以金属辐射片、一面全部敷以金属薄层作接地板而成。辐射片可以根据不同的要求设计成各种形状。微带天线具有质量轻、体积小和易于制造等优点,广泛应用于个人无线通信中。

qq_36521926的博客 6227

Windows Server 域控搭建:AD DS 规划、部署与排障实战

活动目录(AD DS)是 Windows Server 中用于集中管理账号、计算机与策略的核心目录服务,其底层依赖 DNS、Kerberos 和 LDAP 完成身份认证与资源定位。通过域控制器统一身份、组策略和权限边界,企业可显著降低多机环境下账号维护、权限分配与审计成本。十几到上百台终端、有共享隔离与合规要求的局域网,通常适合部署域控;小规模环境则未必划算。围绕域名规划、DNS 指向、OU 设计、FSMO、备份恢复和常见加域故障,域控搭建与 AD 运维需要兼顾前期规划与长期排障,才能让 Windows S

weixin_33845881的博客 763

终极Money Ruby库升级指南:从旧版本平滑迁移到最新版本的完整教程

Money Ruby库是一款强大的Ruby货币处理工具,能够轻松处理货币计算和转换。本指南将帮助你从旧版本无缝升级到最新版本,避免常见陷阱,确保项目平稳过渡。 ## 准备工作:升级前的必要检查 在开始升级之前,请确保你的开发环境满足以下要求: ### 检查Ruby版本 Money 7.0要求Ruby 3.1或更高版本。你可以通过以下命令检查当前Ruby版本: ```bash ruby -

gitblog_00499的博客 523

避坑指南:微信小程序蓝牙广播在iOS上的那些‘坑’(附serviceUuids传值解决方案)

本文深入解析微信小程序蓝牙广播在iOS平台上的开发难点,特别是`serviceUuids`传值解决方案。通过对比iOS与安卓的蓝牙协议实现差异,提供实战编码策略和硬件端配合方案,帮助开发者有效规避兼容性问题,提升蓝牙外围设备开发效率。

weixin_30316097的博客 423

CSS Triggers - 深入理解CSS渲染触发点

**CSS Triggers** 是由 Google Chrome Labs 维护的一个开源项目,它详尽地记录了不同CSS属性更改时,如何触发现代Web浏览器的重排(reflow)和重绘(repaint)过程。此项目对于前端开发者来说是宝贵的资源,帮助他们优化性能,避免不必要的渲染操作,以及更深入地理解网页的渲染机制。 ## 项目快速启动 要快速开始使用 **CSS Triggers**,首先

gitblog_00545的博客 485

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1901

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

锂电池剩余使用寿命预测(RUL) | 基于Stacked-LSTM-Autoencoder的锂电池寿命多变量多步预测(Tensorflow)

前程算法屋的博客 851

css ul li 操作 prop trigger

* * $("#abc>li").removeClass("tohosmethod-select"); $("#abc>li:eq(1)").addClass("tohosmethod-select"); * * * * * * * * * * * *

KingCruel的专栏 482

[ATF]-smc指令详解

1、在ree/tee调用smc之前 2、调用smc之后,cpu触发同步异常,进入ATF的sync_exception_aarch64—>handle_sync_exception—>smc_handler64处理函数 在smc_handler64中又调用了smc_handler func smc_handler64 /* ---------------------------------------------- * Detect if this is a RUN_IMAGE or ot

baron-周贺贺-代码改变世界ctw 1万+

Javaweb梳理16——HTML&CSS使用

video:定义视频。支持的音频格式:MP4, WebM、OGG。audio:定义音频。支持的音频格式:MP3、WAV、OGG。1.新建文本文件,后缀名改为 .html/.htm。5.保存后,使用浏览器打开该文件。2.编写 HTML结构标签。type:设置符号的类型。

haozihua的博客 1109

电商平台系统需求规格说明书(示例)

​​电商系统​​:指本文件所描述的集商品展示、销售、支付、物流跟踪、用户管理等功能于一体的综合性在线购物平台。​​API​​:应用程序编程接口(Application Programming Interface),用于实现系统各模块之间或与外部系统之间的数据交互和功能调用。

跟佟格湾一起学习计算机知识吧~ 1265

脑电信号处理实战 01 | 从 0 跑通第一个 EEG 分析:加载、滤波、频谱与“睁眼闭眼“

本文以 UCI 公开数据集"EEG Eye State"为例,从零走通脑电处理的完整流水线——数据加载、1–40 Hz 带通滤波、Welch 功率谱、频带功率、通道相关性与箱线图质控、睁闭眼对比和时频分析,并用 8 张科研风格图层层揭示这份数据中的伪迹与通道重复问题,说明"流程跑得通不等于结果可信,质量控制永远先行"。

qq_53529450的博客 118

java前端基础--HTML&CSS、JavaScript、Vue、Ajax

java前端基础--HTML&CSS、JavaScript、Vue、Ajax

PluMage11的博客 1995

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

html&css小白笔记

HTML <!DOCTYPE html> h5的文档声明,声明当前网页是按照html5标准编写的,编写网页时一定要写在最上面,如果不写文档声明,则会导致有些浏览器会进入怪异模式,浏览器解析页面会导致页面无法正常显示。 <meta /> meta标签用来设置网页的一些元数据,比如玩也字符集,关键字,简介。meta是一个自结束标签,编写一个自结束...

weixin_43826341的博客 1483

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Clay:一款强大的HTML&CSS原型设计工具

Clay:一款强大的HTML&CSS原型设计工具 Clay 是一个开源的HTML&CSS原型设计工具,旨在帮助开发者快速构建网页原型。该项目主要使用 Python 编程语言开发。 项目基础介绍 Clay 通过简单的命令行操作,允许用户创建和运行一个基于Jinja模板的静态网站。它支持实时预览,能够让开发者即时看到所做的更改。Clay 的设计思想是减少重复工作,提高开发效率,使得开发...

gitblog_00198的博客 429

Html&Css 基础总结(基础好了才是最能打的)四

本篇文章主要讲述CSS的复合选择器、特性、背景属性和显示模式

无方少年游 979

HTML&CSS

1、 是一个单标签。2、img 标签必须具有 src 属性,a 标签必须具有 href 属性。3、input 标签中必须指明 type 属性,其中提交按钮必须放至 form 标签内。4、类选择器前缀为 ".",ID选择器前缀为 "#"。

m0_73620971的博客 1637

分享77个HTML&CSS源码

分享77个HTML&CSS源码 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源文件包含了77个HTML&CSS源码,涵盖了多种前端项目和网页设计模板。无论你是初学者还是经验丰富的开发者,这些源码都能为你提供灵感和帮助。每个源码都经过精心挑选,确保质量和实用性。 内容概览 网页模板: 包括个人博客、企业网站、电商页面等多种类型的网页模板。 特效代码:...

gitblog_06570的博客 424
上一篇: 浅拷贝 深拷贝
下一篇: js简单知识
ZoeLandia
博客等级 码龄6年 734粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值