IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> HTML+CSS学习笔记 -> 正文阅读

[开发工具]HTML+CSS学习笔记

HTML

一、快速入门

vscode新建文件,另存为,demo.html,英文状态下输入!,回车,也可以复制以下代码,然后点击保存,然后右键open in default browser

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个页面</title>
</head>
<body>
    写代码是一件非常快乐的事情
</body>
</html>

二、基本标签

标题标签:<h1>标题标签</h1>  <!--h1到h6,依次变小-->

注释标签:  <!--  -->

换行标签:<br/>   

段落标签: <p>段落标签</p>

分隔线标签:<hr/>

加粗标签: <strong>加粗</strong>    or      <b>加粗</b>

倾斜标签:  <em>倾斜</em>   		or      <i>倾斜</i>

删除线标签: <del>删除线</del> 	  or      <s>删除线</s>

下划线标签:  <ins>下划线</ins>   or      <u>下划线</u>

小号字体标签:<small>小号字体</small><br>
大号字体标签:<big>大号字体</big><br>
下标标签:5m<sup>2</sup><br>      <!-- 5平方米 -->
上标标签:H<sub>2</sub>0<br>      <!-- 化学式h2o -->

div和span标签: <div></div>     <span></span> <!-- div独占一行,span一行可以多个,用来布局的 -->

三、图片标签

<img src="img.jpg" width="70%" align="middle" border="10"/>
 <!--这边存放相对路径-->
属性属性值说明
src图片路径必须的
alt文本替换文本,当图片不能显示时,显示该文字
title文本提示文件,把鼠标放到图片上,显示的文字
width像素设置图像的宽度,高度宽度修改一个即可,另一个会等比例缩放
height像素设置图像的高度,高度宽度修改一个即可,另一个会等比例缩放
border像素设置图像的边框粗细

四、路径

相对路径:图片相对于html页面的位置

相对路径分类符号说明
同一级路径图片位于html文件同一级,如
下一级路径/图片位于html文件下一级,如
上一级路径…/图片位于html文件上一级,如

绝对路径:完整的网络地址或磁盘绝对路径

<img src="https://img1.baidu.com/it/u=2249115676,1805826708&fm=11&fmt=auto&gp=0.jpg">

五、超链接标签

超链接标签:<a href="跳转目标" target="弹出方式">文本或图像</a>	

例如: <a href="http://www.baidu.com" target="_blank">百度</a>	
		<!--  1.外部链接:网址有http://-->
		<!--  _blank新窗口打开页面  _self当前窗口打开页面   -->


	 <a href="index.html" target="_blank">首页</a>	
		<!--  2.内部链接:网址没有http://,就是在打开自己做的首页文件   -->

		<a href="#" >个人网站简介</a>	
		<!--  3.空链接:#-->

		<a href="img.zip" >下载文件</a>	
		<!--  4.下载链接:一般放文件或压缩包-->

  <a href="http://www.baidu.com" target="_blank"><img src="img.jpg" width="70%"/></a>
		<!--  5.网页元素链接:文本 图像 音频 视频都可以添加超链接   -->

六、锚点链接

锚点链接:当我们点击链接,可以快速定位到页面中的某个位置

(1)在链接文本的href属性中,设置属性值为#名字的形式,如:
	<a href="#two">第2集</a>
	
(2)找到目标位置标签,里面添加一个id属性=刚才的名字,如:
	<h3 id="two">第2集介绍</h3>

七、特殊字符

&nbsp;  空格
&lt;  小于号
&gt;  大于号
&amp;  &
&yen;  人民币¥
&copy;  版权
&reg;  注册商标
&deg;  摄氏度
&plusmn;  正负号
&times;  乘号
&divide;  除号

八、表格标签

<!--<thead></thead>  <tbody></tbody> 表格标签会使结构更清晰 -->   
 <!--第一行把td改成th,会加粗,th是表头单元格-->
   <table>
        <tr><th>姓名</th> <th>性别</th> <th>年龄</th></tr>
        <tr><td>刘德华</td> <td></td> <td>56</td></tr>
        <tr><td>张学友</td> <td></td> <td>58</td></tr>
     </table>

九、合并单元格

  1. 先确定是跨行还是跨列
  2. 找到目标单元格,写上合并方式,上下两个,就是上面的,左右两个,就是左边的
  3. 删除多余的单元格
  4. rowspan="2"跨行合并,个数是合并2个,就是第二行第三行的第一个合并
  5. colspan="2"跨列合并,个数是合并2个,就是第二列第三列的第一个合并
  <table width="500" height="249"  border="1" cellspacing="0">
        <tr><td></td> <td colspan="2"></td> </tr>
        <tr><td rowspan="2"></td> <td></td> <td></td></tr>
        <tr> <td></td> <td></td></tr>
     </table>

<!--cellpadding  边沿与内容的空白,,cellspacing,,单元格之间的空白-->

十、列表标签(ul)

<!--无序列表-->
    <ul>
        <li>做真实的自己</li>
        <li>用良心做教育</li>
    </ul>
====================================================================================
<!--有序列表-->
    <ol>
        <li>用心做事</li>
        <li>创造价值</li>
        <li>联手企业</li>
        <li>协同高校</li>
    </ol>
=====================================================================================
<!--自定义列表-->
      <dl>
        <dt>关注我们</dt>
        <dd>新浪微博</dd>
        <dd>官方微信</dd>
        <dd>联系我们</dd>        
    </dl>

十一、表单标签(input)

<!-- 单选多选要有相同name值 -->
<!-- 单选多选可以设置checked属性,当打开页面时候就默认选中这个按钮 -->
    <form action="success.html">
        用户名:<input type="text" name="username" value="请输入用户名"><br>
        密码:<input type="password" name="pwd"><br>
        单选:男<input type="radio" name="sexy"><input type="radio" name="sexy"><br>
        多选:爱好:吃饭<input type="checkbox" name="hobby">睡觉<input type="checkbox" name="hobby">打豆豆<input type="checkbox" name="hobby"><br>
        生日:<input type="date" name=""><br>
        薪资:<input type="number" name=""><br>
        电话:<input type="tel" name=""><br>
        照片:<input type="file" name=""><br>
        喜欢的颜色:<input type="color" name=""><br>
        年龄范围:<input type="range" name=""><br>
        隐藏域:<input type="hidden" name=""><br>
        表单提交:<input type="submit" name=""><br>
        数据重置:<input type="reset" value name=""><br>
        图片提交按钮:<input type="image" src="" name=""><br>
        普通按钮:<input type="button" name="" value="注册"><br>
    </form>

十二、下拉标签(select)

  <form action="success.html" method="post">
        学历:
        <select name="edu">
            <option>研究生</option>
            <option>本科</option>
            <option>大专</option>
            <option selected="selected">高职</option>
        </select>
        <br>
     
        <textarea name="tt"  cols="50" rows="5">留言板</textarea>
        <input type="submit">
    </form>

CSS

一、CSS基础选择器

1.1 标签选择器

给页面中同一类型的标签统一设置样式,缺点就是不能差异化设置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>标签选择器</title>
    <style>
        p {
            color: red;
            font-size: 12px;
        }
        div {
            color: pink;
            font-size: 12px;
        }
    </style>
</head>
<body>
    <p>男生</p>
    <p>男生</p>
    <p>男生</p>
    <div>女生</div>
    <div>女生</div>
    <div>女生</div>
</body>
</html>

1.2 类选择器

差异化,单独修改一个或几个标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>类选择器</title>
    <style>
        .red {
            color: red;           
        }
      
    </style>
</head>
<body>
    <ul>
        <li class="red">做真实的自己</li>
        <li>用良心做教育</li>
    </ul>
</body>
</html>

1.3 id选择器

只能调用一次,别人不能再次使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>id选择器</title>
    <style>
        #pink {
            color: pink;          
        }
      
    </style>
</head>
<body>
   <div id="pink">迈克尔杰克逊</div>
</body>
</html>

1.4 通配符选择器

自动给所有的元素都使用样式,div span ul 都变红色了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>通配符选择器</title>
    <style>
        * {
            color: red;
        }
      
    </style>
</head>
<body>
   <div>我的</div>
   <span>我的</span>
   <ul>
       <li>还是我的</li>
    </ul>
</body>
</html>

二、CSS字体属性(font)

 font-family: '微软雅黑';  <!--设置字体-->
 font-size: 20px;  		 <!--设置字号-->
 font-weight: 700;		<!--设置字体粗细,字体默认是400,所以700是加粗-->
 font-style: italic;    <!--italic斜体,,normal是斜体改成正常-->
 font: italic 700 16px '微软雅黑';  <!--复合属性,四行代码合一,不能颠倒顺序-->

三、CSS文本属性(text)

3.1 文本颜色

表示属性值
预定义的颜色red,green,blue
十六进制(最常用)color: #FF0000;
RGB代码color: rgb(255, 0, 0);

3.2 对齐文本(text-align)

text-align: center;  <!--left:左对齐  center:居中对齐  right:右对齐-->

3.3 装饰文本(text-decoration)

text-decoration: underline; 		<!--下划线-->
text-decoration: line-through; 		<!--删除线-->
text-decoration: none; 			<!--一般下载链接,都自带下划线,选择none可以去掉下划线-->

3.4 文本缩进(text-indent)

 text-indent: 2em;
 <!--em是一个相对单位,就是当前元素1个文字的大小-->

3.5 行间距(line-height)

line-height: 26px;

四、CSS引入方式

4.1 行内样式表(行内式)

适合修改简单样式,把css代码,写到html文件的body下,在标签内部的style属性中设定css样式

<div style="color:red;font-size: 20px;">拼搏到无能为力,坚持到感动自己</div>

4.2 内部样式表(嵌入式)

练习时常用,把css代码,写到html文件的head下的style标签里,所以是嵌入式html的

4.3 外部样式表(链接式)(推荐)

(1)新建css文件,把所有css代码都放进这个文件中,命名为style.css,同一级路径直接写文件名即可

div {
    color: pink;
}

(2)在html页面中,使用标签引入这个文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>外部样式表</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
   <div>来呀,快活呀,反正有大把时光</div>
</body>
</html>

五、Emmet语法

5.1 快速生成html结构语法

  1. 生成标签直接输入标签名按tab键即可比如div然后tab键,就可以生成
  2. 如果想要生成多个相同标签加上乘号就可以了,比如div*3就可以快速生成3个div
  3. 如果有父子级关系的标签,可以用>,比如ul>li就可以了
  4. 如果有兄弟关系的标签,用+就可以了,比如div+p
  5. 如果生成带有类名或者id名字的,直接写.nav或者#banner就可以了
  6. 如果生成的div类名是有顺序的,可以用自增符号$
  7. 如果想要在生成的标签内部写内容可以用{}表示
    <div class="nav"></div> == .nav
    <div id="banner"></div> == #banner

    <div class="demo1"></div>     ==    .demo$*5     
    <div class="demo2"></div>
    <div class="demo3"></div>
    <div class="demo4"></div>
    <div class="demo5"></div>

	 <div>好的</div>    ==   div{好的}  

5.2 整个页面对齐格式

右键,格式化文档

六、CSS复合选择器

6.1 后代选择器

外层标签写在前面,内层标签写在后面,中间空格隔开

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 把ol里的li标签选出来变为pink颜色 */
        ol li {
            color: red;
        }
    </style>
</head>
<body>
    <ol>
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
        <li>我是ol的孩子</li>
    </ol>
    <ul>
        <li>我是ul的孩子</li>
        <li>我是ul的孩子</li>
        <li>我是ul的孩子</li>
    </ul>
</body>
</html>

6.2 子元素选择器(.nav>a)

只能选择最近一级子元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>  
        .nav>a{
            color: pink;    儿子变粉色
        }
    </style>
</head>
<body>
    <div class="nav">
        <a href="#">我是儿子</a>
        <p>
            <a href="#">我是孙子</a>
        </p>
    </div>
</body>
</html>

6.3 并集选择器

可以选择多组标签,同时为他们定义相同的样式,通常用于集体声明

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 把熊大熊二改为红色,还有小猪一家改为粉色 */
        div,
        p,
        .pig li {
            color: red;
        }
    </style>
</head>

<body>
    <div>熊大</div>
    <p>熊二</p>
    <span>光头强</span>
    <ul class="pig">
        <li>小猪佩奇</li>
        <li>猪爸爸</li>
        <li>猪妈妈</li>
    </ul>
</body>

</html>

6.4 伪类选择器

6.4.1 链接伪类选择器( a:hover)

如果要写这个,必须按照这四个顺序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        a:link {
            color: black;
            /*未访问过的链接*/
        }

        a:visited {
            color: orange;
            /*点击过,访问过的链接*/
        }

        a:hover {
            color: skyblue;
            /*鼠标经过的链接*/
        }

        a:active {
            color: green;
            /*鼠标按下还没弹起的链接*/
        }
    </style>
</head>

<body>
    <a href="#">小猪佩奇</a>
</body>

</html>

6.4.2 focus伪类选择器(input:focus)

鼠标点到方框,方框背景颜色就变色了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        input:focus{
            background-color: pink;
        }
    </style>
</head>
<body>
    <input type="text">
    <input type="text">
    <input type="text">
</body>
</html>

七、CSS的元素显示模式

用来布局我们的网页,元素显示模式就是元素标签以什么方式进行显示

HTML元素一般分为块元素和行内元素两种类型

7.1 块元素

常见的块元素有

~

    1. 等,其中
      标签是最典型的块元素

块级元素的特点︰

  • 比较霸道,自己独占一行
  • 高度,宽度、外边距以及内边距都可以控制。
  • 宽度默认是容器(父级宽度)的100%。
  • 是一个容器及盒子,里面可以放行内或者块级元素。
  • 文字元素不能放块元素,如

    里不能放块元素

7.2 行内元素

常见的行内元素有、、等,其中标签是最典型的行内元素。有的地方也将行内元素称为内联元素。

行内元素的特点︰

  • 相邻行内元素在一行上,一行可以显示多个。
  • 高、宽直接设置是无效的。
  • 默认宽度就是它本身内容的宽度。
  • 行内元素只能容纳文本或其他行内元素。
  • 链接里面不能再放链接
  • 特殊情况链接里面可以放块级元素,但是给转换一下块级模式最安全

7.3 行内块元素

在行内元素中有几个特殊的标签——、、,它们同时具有块元素和行内元素的特点。有些资料称它们为行内块元素。

行内块元素的特点︰

  • 和相邻行内元素(行内块)在一行上,但是他们之间会有空白缝隙。一行可以显示多个(行内元素特点)。
  • 默认宽度就是它本身内容的宽度(行内元素特点)。
  • 高度,行高、外边距以及内边距都可以控制(块级元素特点)。

7.4 元素显示模式的转换(display:block; )

行内元素转成块级元素: display: block;

块级元素转成行内元素: display: inline;

转换成行内块元素:display: inline-block;

八、CSS背景( background)

8.1 背景颜色(background-color)

 background-color: pink;			/*背景颜色粉色*/
 background-color: transparent; 	/*背景颜色透明色*/

8.2 背景图片( background-image)

常见于开发网站的logo,或装饰性的小图片

  background-image: url(img2.jpg);  /*url指定相对地址或绝对地址*/

8.3 背景平铺(background-repeat)

一个盒子里,图片会重复出现,这叫平铺

background-repeat: no-repeat;  /*一个盒子只显示一张图片*/

8.4 背景图片位置(background-position)

background-position: center top; /*图片在盒子的上方中间,,参数是方位名词*/
background-position: 20px 50px;  /*第一个x轴,第二个y轴,,参数是精确单位*/
background-position: 20px center;/*x轴是20px,第二个y轴是上下居中,,参数是混合单位*/

8.5 背景固定( background-attachment)

 background-attachment: scroll;  /*背景图像是随对象内容滚动*/
 background-attachment: fixed;   /*背景图像固定*/

8.6 背景复合写法

把前面的代码合到一句里,编译顺序无要求,企业开发,按照下面的顺序即可

background:black url(img2.jpeg) no-repeat fixed center top;

8.7 背景颜色半透明

background:rgba(0, 0, 0, 0.2);  /*前三个是rgb,最后一个是透明度,取值在0-1*/

九、CSS三大特性

9.1 层叠性

解决样式冲突问题,遵循就近原则,哪个样式离得近,就执行哪个,所以下面代码,粉色离得近就变粉色

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            color: red; 
        }

        div {
            color: pink;      /* 就近原则,div粉色离得近就变粉色 */
        }
    </style>
</head>

<body>
    <div>我很厉害</div>

</body>

</html>

9.2 继承性

子标签继承父标签的某些样式,如文本颜色和字号

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            color: red;   /* 给div定义红色,也就是给div的儿子,p标签定义了红色,有继承性 */
            font-size: 14px;
        }
    </style>
</head>

<body>
    <div>
        <p>我很牛逼</p>
    </div>

</body>

</html>

9.3 优先级

当同一个元素指定多个选择器,就会有优先级的产生

  • 选择器相同,则执行层叠性
  • 选择器不同,则根据选择器权重执行
  • 继承的权重是0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是0
  • 权重叠加,不会进位,比如复合选择器ul li,权重就是0,0,0,1+0,0,0,1=0,0,0,2
选择器选择器权重
继承或*0,0,0,0
元素选择器0,0,0,1
类选择器,伪类选择器0,0,1,0
ID选择器0,1,0,0
行内样式 style=""1,0,0,0
!important无穷大

===================================================================================

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .test {
            color: red;       /*这个权重高*/

        }

        div {
            color: pink;

        }
    </style>
</head>

<body>
    <div class="test">真不错</div>

</body>

</html>

十、盒子模型

盒子模型的组成:border边框+cocntent内容+padding内边距+margin外边距

边框,内边距会影响盒子的实际大小

10.1 边框(border)

10.1.1 基本写法

			 border-width:5px; 
           border-style: solid;
           border-color: pink;
属性作用
border-width:5px;边框粗细
border-style: solid;边框样式,solid实线边框,dashed虚线边框,dotted点线边框
border-color: pink;边框颜色

10.1.2 复合写法

复合写法:没有顺序,可以上下左右四条边框独立设置

border: 5px solid pink;   /*复合写法*/
border-top: 5px solid pink; /*四条边框,可以上下左右四条边框独立设置*/

10.1.3 表格细线边框

border-collapse: collapse; /*合并相邻的边框*/

10.1.4 圆角边框

border-radius: 10px;       /*像素越大,弧度越大*/

10.1.5 制作圆形和圆角矩阵

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    .yuanxing {
        width: 200px;
        height: 200px;
        background-color: pink;
        border-radius: 100px;
    }
    .juxing {
        width: 300px;
        height: 100px;
        background-color: pink;
        border-radius: 50px;
    }
</style>
<body>
    1.圆形的做法
    <div class="yuanxing"></div>
    2.圆角矩形的做法
    <div class="juxing"></div>
</body>
</html>

10.2 内边距(padding)

10.2.1 基本写法

设置边框与内容之间的距离

		 padding-left: 20px;
           padding-top: 30px;
           padding-right: 20px;
           padding-bottom: 20px;

10.2.2 复合写法

值的个数表达意思
padding: 5px;1个值,代表上下左右都有5像素内边距
padding: 5px 10px;2个值,代表上下内边距5像素,左右内边距10像素
padding: 5px 10px 20px;3个值,代表上内边距5像素,左右内边距10像素,下内边距20像素
padding: 5px 10px 20px 30px;4个值,代表上5像素,右10像素,下20像素,左30像素,顺时针方向

10.3 外边距(margin)

10.3.1 外边距写法

控制盒子与盒子之间的距离,复合写法与padding一样

			 padding-left: 20px;
           padding-top: 20px;
           padding-right: 20px;
           padding-bottom: 20px;		

10.3.2 块级盒子水平居中对齐(margin: auto;)

必须满足两个条件:

  1. 盒子必须指定了width
  2. 盒子左右的外边距都设置为auto

常见的三种写法:

  1. margin-left: auto; margin-right: auto;
  2. margin: auto;
  3. margin: 0 auto;

10.3.3 行内元素和行内块元素水平居中(text-align: center;)

给其父元素添加 text-align: center; 即可

10.3.4 外边距合并-嵌套块元素塌陷(overflow:hidden)

解决方法:

  1. 可以为父元素定义上边框
  2. 可以为父元素定义上内边距
  3. 可以为父元素添加overflow:hidden

10.4 清除内外边距

? 网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致,因此我们在布局前,首先要清除下网页元素的内外边距,这句话也是css的第一行代码。

? 行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以了

	 * {
            margin: 0;
            padding: 0;
        }

10.5 盒子阴影

box-shadow: 10px 10px 10px 10px black;
描述
第一个必须,水平阴影的位置,允许负值
第二个必须,垂直阴影的位置,允许负值
第三个可选,阴影模糊的虚实
第四个可选,阴影的大小尺寸
第五个可选,阴影的颜色
第六个可选,外部阴影,内部阴影,不常用

10.6 文字阴影

 text-shadow: 5px 5px 6px black;
描述
第一个必须,水平阴影的位置,允许负值
第二个必须,垂直阴影的位置,允许负值
第三个可选,阴影模糊的虚实
第四个可选,阴影的颜色

十一、PS

11.1 查看像素

  1. 左上文件打开我们要的图片
  2. 上方视图==标尺
  3. 右击标尺,改为像素
  4. ctrl+加号 放大视图,ctrl+减号 缩小视图
  5. 左侧工具栏方块矩形选框工具==测量大小
  6. 旁边空白地方,点一下,取消选区

11.2 图层切图

  1. 打开PSD
  2. PS左侧工具栏,左1,右键==移动工具
  3. 点击要切的图片
  4. 右侧图层,有眼睛,点一下,看是不是
  5. 对着图层右键快速导出为PNG
  6. 如果图片文字分开,就按住shift,点两个文件,然后图层==合并图层,再导出

11.3 切片切图

  1. 左3右键==切片工具
  2. 划要切的矩形框
  3. 文件导出存储为web所用格式选择jpeg存储==选中的切片,即可

十二、浮动(float)

12.1 浮动简介

浮动最典型的应用:可以让多个块级元素一行内排列显示

网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动

float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘

12.2 浮动特性-脱标

  1. 脱离标准普通流的控制移动到指定位置,俗称脱标
  2. 浮动的盒子不再保留原先的位置

12.3 浮动特性-浮动元素一行显示

  1. 如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列
  2. 浮动的元素是互相贴靠在一起的,如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐

12.4 浮动特性-浮动元素具有行内块元素特性

任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性

12.5 浮动元素经常和标准流父级搭配使用

为了约束浮动元素位置,我们网页布局一般采取的策略是:

先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,复合网页布局第一准则

一个元素浮动了,其余的兄弟元素也要浮动。

十三、清除浮动

13.1 概念

  • 清除浮动的本质是清除浮动元素造成的影响。

  • 如果父盒子本身有高度,则不需要清除浮动

  • 清除浮动后,父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了

  • clear:both;

13.2 额外标签法(clear:both)(不推荐)

会在浮动元素末尾添加一个空的标签。这个新标签必须是块级元素

优点:通俗易懂,书写方便 缺点:添加许多无意义的标签,结构化较差

比如:

13.3 父级添加(overflow:hidden)

优点:代码简洁 缺点:无法显示溢出的部分

与外边距合并解决元素塌陷代码一样

overflow:hidden

13.4 :after 伪元素法(clearfix:after)

优点:没有增加标签,结构更简单 缺点:照顾低版本浏览器 代表网站:百度 淘宝 网易

  .clearfix:after {
        content: "";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
    }
    .clearfix {
        *zoom: 1;
        /* IE 6 7 专有 */
    }
	.box {
        width: 800px;
        border: 1px solid blue;
        margin: 0 auto;
    }   

/*body里这么调用 */
<div class="box clearfix">我是大佬</div>

13.5 双伪元素

优点:代码更简洁 缺点:照顾低版本浏览器 代表网站:小米 腾讯

   .clearfix::before,
    .clearfix:after {
        content: "";
        display: table;
     
    }
    .clearfix:after {
        clear: both;
    }
    .clearfix {
        *zoom: 1;
        /* IE 6 7 专有 */
    }

    .box {
        width: 800px;
        border: 1px solid blue;
        margin: 0 auto;
    }   
    
    /*body里这么调用 */
<div class="box clearfix">我是大佬</div>

十四、定位(position)

定位也是在摆放盒子,按照定位的方式移动盒子。

14.1 定位的组成

定位=定位模式+边偏移

边偏移则决定了该元素的最终位置,有top bottom left right四个属性

边偏移属性示例描述
toptop: 80px顶端偏移量,定义元素相对于其父元素上边线的距离
bottombottom: 80px底部偏移量,定义元素相对于其父元素下边线的距离
leftleft: 80px左侧偏移量,定义元素相对于其父元素左边线的距离
rightright: 80px右侧偏移量,定义元素相对于其父元素右边线的距离

定位的盒子有了边偏移才有价值。 一般情况下,凡是有定位地方必定有边偏移。

定位模式用于指定一个元素在文档中的定位方式,通过css的position属性来设置,其值可以分为四个:

static:静态定位 relative:相对定位 absolute:绝对定位 fixed:固定定位

选择器 { 
    position: 属性值; 
}

14.2 定位模式介绍

14.2.1 静态定位(static) 了解

  • 静态定位是元素的默认定位方式。无定位的意思。它相当于 border 里面的none,静态定位static,不要定位的时候用。
  • 静态定位 按照标准流特性摆放位置,它没有边偏移。
  • position: static;
  • 静态定位在布局时我们几乎不用

14.2.2 相对定位(relative) 重要

  • 相对定位是元素在移动位置的时候,是相对于它自己原来的位置来说的。

  • 语法:position: relative;

  • 相对定位的特点:

    1. 它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。

    2. 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它。

    因此,相对定位并没有脱标。它最典型的应用是给绝对定位当爹的。。。

14.2.3 绝对定位(absolute) 重要

14.2.3.1 绝对定位的介绍
  • 绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的。

  • 语法:position: absolute;

  • 绝对定位的特点总结:(务必记住)

    1.如果没有祖先元素或者祖先元素没有定位,则以浏览器为基准定位(Document 文档)。

    2.如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位祖先元素为参考点移动位置。

    3.绝对定位不再占有原先的位置。所以绝对定位是脱离标准流的。(脱标)

14.2.3.2 定位口诀 —— 子绝父相

意思是:子级是绝对定位的话,父级要用相对定位。

因为绝对定位的盒子是拼爹的,所以要和父级搭配一起来使用。

①子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。

②父盒子需要加定位限制子盒子在父盒子内显示。

③父盒子布局时,需要占有位置,因此父亲只能是相对定位。

这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。

总结: 因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位

当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。

14.2.4 固定定位(fixed) 重要

  • 固定定位是元素固定于浏览器可视区的位置。主要使用场景: 可以在浏览器页面滚动时元素的位置不会改变。

  • 语法:position: fixed;

  • 固定定位的特点:

    1.以浏览器的可视窗口为参照点移动元素。

    • 跟父元素没有任何关系
    • 不随滚动条滚动。

    2.固定定位不在占有原先的位置。

提示:IE 6 等低版本浏览器不支持固定定位。

14.2.5 粘性定位(sticky) 了解

  • 粘性定位可以被认为是相对定位和固定定位的混合。 Sticky 粘性的

  • 语法:

     选择器 { 
         position: sticky; 
         top: 10px; 
     }
    
  • 粘性定位的特点:

    1.以浏览器的可视窗口为参照点移动元素(固定定位特点)

    2.粘性定位占有原先的位置(相对定位特点)

    3.必须添加 top 、left、right、bottom 其中一个才有效

    跟页面滚动搭配使用。 兼容性较差,IE 不支持。

14.3 定位的应用

14.3.1. 固定定位小技巧: 固定在版心左侧位置。

小算法:

1.让固定定位的盒子 left: 50%. 走到浏览器可视区(也可以看做版心) 的一半位置。

2.让固定定位的盒子 margin-left: 版心宽度的一半距离,多走版心宽度的一半位置

就可以让固定定位的盒子贴着版心右侧对齐了。

14.3.2. 堆叠顺序(z-index)

  • 在使用定位布局时,可能会出现盒子重叠的情况。此时,可以使用z-index 来控制盒子的前后次序 (z轴)

  • 语法:z-index: 1;

  • z-index 的特性如下:

    1. 属性值:正整数、负整数或 0,默认值是 0,数值越大,盒子越靠上;
    2. 如果属性值相同,则按照书写顺序,后来者居上;
    3. 数字后面不能加单位。

    注意:z-index 只能应用于相对定位、绝对定位和固定定位的元素,其他标准流、浮动和静态定位无效。

14.4 定位的拓展

14.4.1 绝对定位的盒子居中

注意:加了绝对定位/固定定位的盒子不能通过设置 margin: auto 设置水平居中。

但是可以通过以下计算方法实现水平和垂直居中,可以按照下图的方法:

  1. left: 50%; 让盒子的左侧移动到父级元素的水平中心位置;
  2. margin-left: -100px; 让盒子向左移动自身宽度的一半。
  3. top: 50%; 垂直居中位置;
  4. margin-top: -100px;

14.4.2 定位特殊特性

绝对定位和固定定位也和浮动类似。

1.行内元素添加绝对或者固定定位,可以直接设置高度和宽度。

2.块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。

14.4.3 脱标的盒子不会触发外边距塌陷

浮动元素、绝对定位(固定定位)元素的都不会触发外边距合并的问题。 (我们以前是用padding border overflow解决的,也就是说,我们给盒子改为了浮动或者定位,就不会有垂直外边距合并的问题了。

14.4.4 绝对定位(固定定位)会完全压住盒子

浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字(图片)

但是绝对定位(固定定位) 会压住下面标准流所有的内容。

浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素

十五、网页布局总结

传统网页布局的三种方式:普通流,浮动,定位

通过盒子模型,清楚知道大部分html标签是一个盒子。

通过CSS浮动、定位 可以让每个盒子排列成为网页。

一个完整的网页,是标准流、浮动、定位一起完成布局的,每个都有自己的专门用法。

15.1. 标准流

普通流(也叫标准流/文档流)

可以让盒子上下排列或者左右排列,垂直的块级盒子显示就用标准流布局

就是标签按照规定好默认方式排列,是最基本的布局方式

  • 块级元素会独占一行,从上向下顺序排列
  • 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行

15.2. 浮动

可以让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局

15.3. 定位

定位最大的特点是有层叠的概念,就是可以让多个盒子前后叠压来显示。如果元素自由在某个盒子内移动就用定位布局。

十六、元素的显示与隐藏

? 让一个元素在页面中消失或者显示出来

? 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现!

16.1. display 显示(重点)

  • display 设置或检索对象是否及如何显示。

    display: none 隐藏对象
    
    display:block 除了转换为块级元素之外,同时还有显示元素的意思。
    
  • 特点: display 隐藏元素后,不再占有原来的位置。

  • 后面应用及其广泛,搭配 JS 可以做很多的网页特效。

16.2. visibility 可见性 (了解)

  • visibility 属性用于指定一个元素应可见还是隐藏。

    visibility:visible ;  元素可视
    
    visibility:hidden;    元素隐藏
    
  • 特点:visibility 隐藏元素后,继续占有原来的位置。

  • 如果隐藏元素想要原来位置, 就用 visibility:hidden

  • 如果隐藏元素不想要原来位置, 就用 display:none

16.3. overflow 溢出(重点)

  • overflow 属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度) 时,会发生什么。
属性值描述
visible不剪切内容也不添加滚动条
hidden不显示超过对象尺寸的内容,超出的部分隐藏掉
scroll不管超出内容否,总是显示滚动条
auto超出自动显示滚动条,不超出不显示滚动条
  • 一般情况下,我们都不想让溢出的内容显示出来,因为溢出的部分会影响布局。
  • 但是如果有定位的盒子, 请慎用overflow:hidden 因为它会隐藏多余的部分。

十七、精灵图(sprites)

17.1 精灵图的简介

? 一个网页中往往会应用很多小的背景图像作为修饰,当网页中的图像过多时,服务器就会频繁地接收和发送请求图片,造成服务器请求压力过大,这将大大降低页面的加载速度。

? 为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。

? 将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。

17.2 精灵图的使用

使用精灵图核心:

  1. 精灵技术主要针对于背景图片使用。就是把多个小背景图片整合到一张大图片中。
  2. 这个大图片也称为 sprites 精灵图 或者 雪碧图
  3. 移动背景图片位置, 此时可以使用 background-position 。
  4. 移动的距离就是这个目标图片的 x 和 y 坐标。注意网页中的坐标有所不同
  5. 因为一般情况下都是往上往左移动,所以数值是负值。
  6. 使用精灵图的时候需要精确测量,每个小背景图片的大小和位置。

使用精灵图核心总结:

  1. 精灵图主要针对于小的背景图片使用。

  2. 主要借助于背景位置来实现—background-position

  3. 一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值, y轴同理。)

17.3 案例:拼出pink

结构

<span class="p">p</span>
<span class="i">i</span>
<span class="n">n</span>
<span class="k">k</span>

样式

span {
    display: inline-block;
    background: url(images/abcd.jpg) no-repeat;
}
.p {
    width: 100px;
    height: 112px;
    /* background-color: pink; */
    background-position:  -493px -276px;
}
.i {
    width: 60px;
    height: 108px;
    /* background-color: pink; */
    background-position: -327px -142px;
}
.n {
    width: 108px;
    height: 109px;
    /* background-color: pink; */
    background-position: -215px -141px;
}
.k {
    width: 105px;
    height: 114px;
    /* background-color: pink; */
    background-position: -495px -142px;
}

十八、字体图标

18.1 字体图标的产生

字体图标使用场景: 主要用于显示网页中通用、常用的一些小图标。

精灵图是有诸多优点的,但是缺点很明显。

1.图片文件还是比较大的。

2.图片本身放大和缩小会失真。

3.一旦图片制作完毕想要更换非常复杂。

此时,有一种技术的出现很好的解决了以上问题,就是字体图标 iconfont

字体图标可以为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体

18.2 字体图标的优点

轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求

  • 灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等
  • 兼容性:几乎支持所有的浏览器
  • 注意: 字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。

18.3 字体图标的下载

推荐下载网站:

  • icomoon 字库 http://icomoon.io 推荐指数 ★★★★★

IcoMoon 成立于 2011 年,推出了第一个自定义图标字体生成器,它允许用户选择所需要的图标,使它们成一字型。该字库内容种类繁多,非常全面,唯一的遗憾是国外服务器,打开网速较慢。

打开网址Icomoon App选择2个create fontdownload

  • 阿里 iconfont 字库 http://www.iconfont.cn/ 推荐指数 ★★★★★

这个是阿里妈妈 M2UX 的一个 iconfont 字体图标字库,包含了淘宝图标库和阿里妈妈图标库。可以使用 AI制作图标上传生成。 重点是,免费!

18.4 字体图标的引入

下载完毕之后,注意原先的文件不要删,后面会用

(1)http://icomoon.io

(2)打开网址Icomoon App选择2个generate fontdownload

(3)解压出来 里面的 fonts 文件夹放入页面根目录下,也就是vscode里面的html文件的同级目录

(4)在 CSS style中加入,解压出来的style.css的第一段 @font-face

   这一段复制黏贴 
	@font-face {
   font-family: 'icomoon';
   src:  url('fonts/icomoon.eot?7kkyc2');
   src:  url('fonts/icomoon.eot?7kkyc2#iefix') format('embedded-opentype'),
     url('fonts/icomoon.ttf?7kkyc2') format('truetype'),
     url('fonts/icomoon.woff?7kkyc2') format('woff'),
     url('fonts/icomoon.svg?7kkyc2#icomoon') format('svg');
   font-weight: normal;
   font-style: normal;
 }
 

(5)html 标签内添加小图标。在解压出来的demo.html 复制图标e91b的右边小方框

<body>
    <span>?</span>
</body>

(6)给标签定义字体。在css style里加入以下代码

span {
 font-family: "icomoon";
}
注意:务必保证 这个字体和上面@font-face里面的字体保持一致 

(7)完整是这样的

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    @font-face {
      font-family: 'icomoon';
      src: url('fonts/icomoon.eot?gedlt2');
      src: url('fonts/icomoon.eot?gedlt2#iefix') format('embedded-opentype'),
        url('fonts/icomoon.ttf?gedlt2') format('truetype'),
        url('fonts/icomoon.woff?gedlt2') format('woff'),
        url('fonts/icomoon.svg?gedlt2#icomoon') format('svg');
      font-weight: normal;
      font-style: normal;
      font-display: block;
    }

    span {
      font-family: icomoon;
    }
  </style>
</head>

<body>
  <span>?</span>
</body>

</html>

18.5 字体图标的追加

如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。

打开网址Icomoon Appimport icons解压出来的selection.jsonyesgenerate fontdownload

把压缩包里面的 selection.json 从新上传,并替换原来的文件即可。

十九、CSS 三角

19.1 介绍

网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标。

一张图, 你就知道 CSS 三角是怎么来的了, 做法如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCZhgk5D-1633686133035)(C:\Users\Hebe\Desktop\前端学习\09-前端基础CSS第七天\笔记\images\1571520965966.png)]

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box2 {
      width: 0;
      height: 0;
      border: 10px solid transparent;          /* 10px数字越大。三角越大 */
      border-left-color: pink;        		  /* 改left,可以改三角朝向 */
    
    }
  </style>
</head>
<body>
  <div class="box2"></div>
</body>
</html>
  1. 我们用css 边框可以模拟三角效果
  2. 宽度高度为0
  3. 我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了
  4. 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;

19.2 案例:京东效果三角

盒子正上方 有小三角凸起

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS 三角制作</title>
    <style>

        .jd {
            position: relative;
            width: 120px;
            height: 249px;
            background-color: pink;
        }
        .jd span {
            position: absolute;
            right: 15px;
            top: -10px;
            width: 0;
            height: 0;
            /* 为了照顾兼容性 */
            line-height: 0;  
            font-size: 0;
            border: 5px solid transparent;
            border-bottom-color: pink;
        }
    </style>
</head>
<body>

    <div class="jd">
        <span></span>
    </div>
</body>
</html>

二十、CSS 用户界面样式

所谓的界面样式,就是更改一些用户操作样式,以便提高更好的用户体验。

  • 更改用户的鼠标样式
  • 表单轮廓
  • 防止表单域拖拽

20.1 鼠标样式 cursor

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>用户界面样式-鼠标样式</title>
</head>
<body>
    <ul>
        <li style="cursor: default;">我是默认的小白鼠标样式</li>
        <li style="cursor: pointer;">我是鼠标小手样式</li>
        <li style="cursor: move;">我是鼠标移动样式</li>
        <li style="cursor: text;">我是鼠标文本样式</li>
        <li style="cursor: not-allowed;">我是鼠标禁止样式</li>
    </ul>
</body>
</html>
属性值描述
default小白 默认
pointer小手
move移动
text文本
not-allowed禁止

20.2 轮廓线 outline

给表单添加 outline: 0; 或者 outline: none; 样式之后,就可以去掉默认的蓝色边框。

 input {
 	outline: none; 
 }

20.3 防止拖拽文本域 resize

实际开发中,我们文本域右下角是不可以拖拽的。

 textarea{  	resize: none; }

二一、vertical-align 属性应用

CSS 的 vertical-align 属性使用场景: 经常用于设置图片和文字垂直对齐。

语法:

vertical-align : baseline | top | middle | bottom 

21.1 图片、表单和文字对齐

图片、表单都属于行内块元素,默认的 vertical-align 是基线对齐。

此时可以给图片、表单这些行内块元素的 vertical-align 属性设置为 middle 就可以让文字和图片垂直居中对齐了。

21.2 解决图片底部默认空白缝隙问题

bug:图片底侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。

主要解决方法有两种:

1.给图片添加 vertical-align:middle | top| bottom 等。 (提倡使用的)

2.把图片转换为块级元素 display: block;

二二、溢出的文字省略号显示

22.1 单行文本溢出显示省略号

单行文本溢出显示省略号–必须满足三个条件:

/*1. 先强制一行内显示文本*/   white-space: nowrap;  /*默认 normal 自动换行*/   
/*2. 超出的部分隐藏*/   overflow: hidden;    
/*3. 文字用省略号替代超出的部分*/   text-overflow: ellipsis;

22.2 多行文本溢出显示省略号(了解)

多行文本溢出显示省略号,有较大兼容性问题,适合于webKit浏览器或移动端(移动端大部分是webkit内核)

/*1. 超出的部分隐藏 */							overflow: hidden;
/*2. 文字用省略号替代超出的部分 */				text-overflow: ellipsis;
/*3. 弹性伸缩盒子模型显示 */						display: -webkit-box;
/*4. 限制在一个块元素显示的文本的行数 */		-webkit-line-clamp: 2;
/*5. 设置或检索伸缩盒对象的子元素的排列方式 */		-webkit-box-orient: vertical;

更推荐让后台人员来做这个效果,因为后台人员可以设置显示多少个字,操作更简单。

二三、常见布局技巧

23.1. margin负值运用

1.让每个盒子margin 往左侧移动 -1px 正好压住相邻盒子边框

2.鼠标经过某个盒子的时候,提高当前盒子的层级即可(如果没有定位,则加相对定位(保留位置),如果有定位,则加z-index)

23.2 文字围绕浮动元素

巧妙运用浮动元素不会压住文字的特性

23.3 行内块巧妙运用,上一页,下一页

页码在页面中间显示:

  1. 把这些链接盒子转换为行内块, 之后给父级指定 text-align:center;
  2. 利用行内块元素中间有缝隙,并且给父级添加 text-align:center; 行内块元素会水平会居中

23.4. CSS 三角强化 价格标签

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CSS三角强化的巧妙运用</title>
  <style>
    .price {
      width: 160px;
      height: 24px;
      line-height: 24px;
      border: 1px solid red;
      margin: 0 auto;
    }

    .miaosha {
      position: relative;
      float: left;
      width: 90px;
      height: 100%;
      background-color: red;
      text-align: center;
      color: #fff;
      font-weight: 700;
      margin-right: 8px;
    }

    .miaosha i {
      position: absolute;
      right: 0;
      top: 0;
      width: 0;
      height: 0;
      border-color: transparent #fff transparent transparent;
      border-style: solid;
      border-width: 24px 10px 0 0;
    }

    .origin {
      font-size: 12px;
      color: gray;
      text-decoration: line-through;
    }
  </style>
</head>

<body>
  <div class="price"> <span class="miaosha"> ¥1650 <i></i> </span> <span class="origin">¥5650</span> </div>
</body>

</html>

HTML5新特性

一、概述

HTML5 的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。

这些新特性都有兼容性问题,基本是 IE9+ 以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。

二、新增语义化标签

  • <header> 头部标签
  • <nav> 导航标签
  • <article> 内容标签
  • <section> 定义文档某个区域
  • <aside> 侧边栏标签
  • <footer> 尾部标签

三、新增多媒体标签

多媒体标签分为 音频 audio 和视频 video 两个标签

我们可以很方便的在页面中嵌入音频和视频

3.1 视频标签- video

3.1.1 基本使用

当前 元素支持三种视频格式: 尽量使用 mp4格式

使用语法:

 <video src="media/mi.mp4"></video>

3.1.2 兼容写法

由于各个浏览器的支持情况不同,所以我们会有一种兼容性的写法,这种写法了解一下即可

下面这种写法,浏览器会匹配video标签中的source,如果支持就播放,如果不支持往下匹配,直到没有匹配的格式,就提示文本

<video  controls="controls"  width="300">
    <source src="move.ogg" type="video/ogg" >
    <source src="move.mp4" type="video/mp4" >
    您的浏览器暂不支持 <video> 标签播放视频
</ video >

3.1.3 常用属性

  • autoplay 自动播放
    • 注意: 在google浏览器上面,默认禁止了自动播放,如果想要自动播放的效果,需要设置 muted属性
  • width 宽度
  • height 高度
  • loop 循环播放
  • src 播放源
  • muted 静音播放

示例代码:

<video src="media/mi.mp4" autoplay="autoplay" muted="muted"  loop="loop" poster="media/mi9.jpg"></video>

3.2 音频标签- audio

3.2.1 基本使用

当前 元素支持三种音频格式: 尽量使用 mp3格式

使用语法:

<audio src="media/music.mp3"></audio>

3.2.2 兼容写法

由于各个浏览器的支持情况不同,所以我们会有一种兼容性的写法,这种写法了解一下即可

上面这种写法,浏览器会匹配audio标签中的source,如果支持就播放,如果不支持往下匹配,直到没有匹配的格式,就提示文本

< audio controls="controls"  >
    <source src="happy.mp3" type="audio/mpeg" >
    <source src="happy.ogg" type="audio/ogg" >
    您的浏览器暂不支持 <audio> 标签。
</ audio>

3.2.3 常用属性

示例代码:

<audio src="media/music.mp3" autoplay="autoplay" controls="controls"></audio>
  • 音频标签和视频标签使用方式基本一致
  • 谷歌浏览器把音频和视频自动播放禁止了
  • 我们可以给视频标签添加 muted 属性来静音播放视频,音频不可以(可以通过JavaScript解决)
  • 视频标签是重点,我们经常设置自动播放,不使用 controls 控件,循环和设置大小属性

四、新增表单元素

在H5中,帮我们新增加了很多类型的表单,这样方便了程序员的开发

<!-- 我们验证的时候必须添加form表单域 -->
<form action="">
    <ul>
        <li>邮箱: <input type="email" /></li>
        <li>网址: <input type="url" /></li>
        <li>日期: <input type="date" /></li>
        <li>时间: <input type="time" /></li>
        <li>数量: <input type="number" /></li>
        <li>手机号码: <input type="tel" /></li>
        <li>搜索: <input type="search" /></li>
        <li>颜色: <input type="color" /></li>
        <!-- 当我们点击提交按钮就可以验证表单了 -->
        <li> <input type="submit" value="提交"></li>
    </ul>
</form>
属性说明
requiredrequired表单元素内容不为空
placeholder提示文本表单提示信息
autofocusautofocus自动聚焦属性,打开百度,光标自动定到搜索框
autocompleteoff/on以前用户填写过,并且成功提交了,这边会直接显示,不用再次填写了
multiplemultiple可以多选文件提交

CSS3新特性

一、CSS3 的现状

  • 新增的CSS3特性有兼容性问题,ie9+才支持
  • 移动端支持优于 PC 端

二、CSS3 新增选择器

2.1 属性选择器

**注意:**类选择器、属性选择器、伪类选择器,权重为 10。

示例代码:

 /* 只选择具有value属性的input 选取出来 */
input[value] {
    color: pink;
}
<input type="text" value="请输入用户名">
<input type="text">
==============================================================================
/* 只选择 type =text 文本框的input 选取出来,,有没有引号都可以 */
input[type=text] {
    color: pink;
}
<input type="text" name="" id="">
<input type="password" name="" id="">
==============================================================================
/* 选择首先是div 然后 具有class属性 并且属性值 必须是 icon开头的这些元素 */
div[class^=icon] {
    color: red;
}
 	<div class="icon1">小图标1</div>
    <div class="icon2">小图标2</div>
    <div class="icon3">小图标3</div>
    <div class="icon4">小图标4</div>
==============================================================================
/* 选择首先是section 然后 具有class属性 并且属性值 必须是 data结尾的这些元素 */
section[class$=data] {
    color: blue;
}

  	<div class="icon1-data">小图标1</div>
    <div class="icon2-data">小图标2</div>
    <div class="icon3-data">小图标3</div>
    <div class="icon4-data">小图标4</div>

2.2 结构伪类选择器

类选择器、属性选择器、伪类选择器,权重为 10

结构伪类选择器主要根据文档结构来选择器元素, 常用于根据父级选择器里面的子元素

2.2.1 E:first-child

E:last-child 则是选择到了最后一个li标签

匹配父元素的第一个子元素E

 <style>
    ul li:first-child{
      background-color: red;
    }
  </style>

  <ul>
    <li>列表项一</li>
    <li>列表项二</li>
    <li>列表项三</li>
    <li>列表项四</li>
  </ul>

2.2.2 E:nth-child(n)

匹配到父元素的第n个元素

  • 匹配到父元素的第2个子元素

    ul li:nth-child(2){}

  • 匹配到父元素的序号为奇数的子元素

    ul li:nth-child(odd){} odd 是关键字 奇数的意思(3个字母 )

  • 匹配到父元素的序号为偶数的子元素

    ul li:nth-child(even){} even(4个字母 )

  • 匹配到父元素的前3个子元素

    ul li:nth-child(-n+3){}

    选择器中的 n 是怎么变化的呢?

    因为 n是从 0 ,1,2,3… 一直递增

    所以 -n+3 就变成了

    • n=0 时 -0+3=3
    • n=1时 -1+3=2
    • n=2时 -2+3=1
    • n=3时 -3+3=0
公式取值
2n偶数
2n+1奇数
5n5 10 15
n+5第五个开始,包含第五个
-n+5前五个,包含第五个

2.2.3 E:nth-child 与 E:nth-of-type 的区别

这里只讲明 E:nth-child(n)E:nth-of-type(n) 的区别

剩下的 E:first-of-type E:last-of-type E:nth-last-of-type(n) 同理做推导即可

  • E:nth-child(n) 匹配父元素的第n个子元素E,也就是说,nth-child 对父元素里面所有孩子排序选择(序号是固定的) 先找到第n个孩子,然后看看是否和E匹配
  • E:nth-of-type(n) 匹配同类型中的第n个同级兄弟元素E,也就是说,对父元素里面指定子元素进行排序选择。 先去匹配E ,然后再根据E 找第n个孩子
<style>
    ul li:nth-child(2){
      /* 字体变成红色 */
        color: red;
    }

    ul li:nth-of-type(2){
      /* 背景变成绿色 */
      background-color: green;
    }
  </style>


  <ul>
    <li>列表项一</li>
    <p>乱来的p标签</p>
    <li>列表项二</li>
    <li>列表项三</li>
    <li>列表项四</li>
  </ul>

2.3 伪元素选择器(div::before)

伪元素选择器可以帮助我们利用CSS创建新标签元素,而不需要HTML标签,从而简化HTML结构

  • before 和 after 创建一个元素,但是属于行内元素
  • 新创建的这个元素在文档树中是找不到的,所以我们称为伪元素
  • 语法: element::before {}
  • before 和 after 必须有 content 属性
  • before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素
    伪元素选择器和标签选择器一样,权重为 1
<style>
    div {
        width: 200px;
        height: 200px;
        background-color: pink;
    }
    /* div::before 权重是2 */
    div::before {
        /* 这个content是必须要写的 */
        content: '我';
    }
    div::after {
        content: '小猪佩奇';
    }
</style>
<body>
    <div></div>
</body>

三、盒子模型(box-sizing: border-box)

CSS3 中可以通过 box-sizing 来指定盒模型,有2个值:即可指定为 content-box、border-box,这样我们计算盒子大小的方式就发生了改变

可以分成两种情况:

  • box-sizing: content-box 盒子大小为 width + padding + border (以前默认的)
  • box-sizing: border-box 盒子大小为 width

如果盒子模型我们改为了box-sizing: border-box , 那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)

四、图标变模糊 – filter

filter CSS属性将模糊或颜色偏移等图形效果应用于元素

filter:   函数(); 
例如: filter: blur(5px);  /*blur模糊处理  数值越大越模糊 */

五、计算盒子宽度 – calc

calc() 此CSS函数让你在声明CSS属性值时执行一些计算

括号里面可以使用 + - * / 来进行计算

width: calc(100% - 30px);  /*子盒子宽度永远比父盒子小30像素*/

六、CSS3 过渡属性

过渡动画:是从一个状态渐渐的过渡到另外一个状态

我们现在经常和 :hover 一起 搭配使用。

语法:

transition: 要过渡的属性  花费时间  运动曲线  何时开始;


  <style>
    div {
      width: 200px;
      height: 100px;
      background-color: pink;
      transition: width 0.5s;
    }
  
    div:hover {
      width: 400px;
    }
  </style>


<body>  
    <div></div>
</body>
  • 属性 : 想要变化的 css 属性, 宽度高度 背景颜色 内外边距都可以 。如果想要所有的属性都变化过渡, 写一个all 就可以
  • 花费时间: 单位是 秒(必须写单位) 比如 0.5s
  • 运动曲线: 默认是 ease (可以省略)
  • 何时开始:单位是 秒(必须写单位)可以设置延迟触发时间 默认是 0s (可以省略)
  • 后面两个属性可以省略
  • 记住过渡的使用口诀: 谁做过渡给谁加

七、2D转换(transform)

转换可以实现元素的位移、旋转、缩放等效果

7.1 移动:translate

不会影响到其他元素的位置

transform: translate(100px,100px);
transform: translate(0,100px);    移动y轴,上下动
transform: translate(100px,0);    移动x轴,左右动

transform: translate(50%,50%);    移动的距离是盒子自身的高度宽度的50%

7.2 旋转:rotate

  • rotate里面的度数,单位是deg
  • 角度为正,顺时针;角度为负,逆时针
  • 默认旋转的中心点是元素的中心点
transform: rotate(90deg);    顺时针旋转90度

transform-origin: left bottom;
transform: rotate(90deg);     左下角为中心点,顺时针旋转90度

7.3 缩放:scale

transform: scale(2,1);       修改宽度为原来的2倍,高度为原来的1倍
transform: scale(2);         修改宽度高度等比例缩放为原来的2倍
transform: scale(0.5,0.5);   缩小一半

八、动画(animation)

8.1 基本使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes move {
            0% {
                transform: translateX(0px)
            }

            100% {
                transform: translateX(1000px)
            }
        }

        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            animation-name: move;
            animation-duration: 2s;

        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

8.2 动画序列

  • 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列。
  • 动画序列可以分段 25%,意味着定义10s,走到25%,花费2.5秒
  • 请用百分比来规定变化发生的时间,或用关键词"from"和"to”,等同于0%和100%。
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @keyframes move {
            0% {
                transform: translate(0, 0);
            }

            25% {
                transform: translate(1000px, 0);
            }

            50% {
                transform: translate(1000px, 500px);
            }

            75% {
                transform: translate(0, 500px);
            }

            100% {
                transform: translate(0, 0);
            }
        }

        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            animation-name: move;
            animation-duration: 5s;

        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

8.3 常见属性

属性描述
keyframes规定动画。
animation所有动画属性的简写属性,除了animation-play-state属性。
animation-name规定@keyframes动画的名称。(必须的)
animation-duration规定动画完成一个周期所花费的秒或亳秒,默认是0。(必须的)
animation-timing-function规定动画的速度曲线,默认是“ease"就是低俗开始,然后加快,结束前变慢。。匀速是linear。。steps()指定了时间函数中的步长
animation-delay规定动画何时开始,默认是0.
animation-iteration-count规定动画被播放的次数,默认是1,还有infinite无限
animation-direction规定动画是否在下一周期逆向播放,默认是“normal " 想要反方向alternate逆播放
animation-play-state规定动画是否正在运行或暂停。默认是"running",还有"pause".
animation-fill-mode规定动画结束后状态,保持forwards 回到起始backwards

8.4 简写属性

animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或结束的状态

九、3D转换(transform)

9.1 3D位移

transform: translate3d(100px,100px,100px);   对应x,y,z

9.2 透视(perspective)

透视写在被观察元素的父盒子上面

d:就是视距,就是一个距离人的眼睛到屏幕的距离

z:就是z轴,物体距离屏幕的距离,z轴越大我们看到的物体就越大

	<style>
        body {
            perspective: 500px;
        }
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            transform: translate3d(100px,100px,100px);
        }
    </style>

9.3 3D旋转

transform: rotateX(180deg); 奥运会体操单杠 上下转

transform: rotateY(180deg); 钢管舞 左右转

transform: rotateZ(180deg); 类似2D,顺时针旋转,类似抽奖转盘

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body {
            perspective: 500px;
        }
        img {
            width: 200px;
            display: block;
            margin: 100px auto;
            transition: all 2s;
        }
        img:hover {
            
            transform: rotateY(180deg);
        }
    </style>
</head>

<body>
    <img src="pic.jpg" alt="">
</body>

</html>

9.4 3D呈现(transform-style)

  • 控制子元素是否开启三维立体环境
  • transform-style: flat; 子元素不开启3D立体空间,默认的
  • transform-style: preserve-3d; 子元素开启立体空间
  • 代码写给父级 但是影响的是子盒子

十、浏览器私有前缀

是为了兼容老版本的写法,新版本的浏览器无需添加

10.1 私有前缀

  • -moz-:代表Firefox浏览器私有属性
  • -ms-:代表ie浏览器私有属性
  • -webkit-:代表safari chrome浏览器私有属性
  • -o-:代表Opera浏览器私有属性

10.2 提倡写法

-webkit-border-radius: 10px;
-o-border-radius: 10px;
-moz-border-radius: 10px;
-ms-border-radius: 10px;
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:28:46  更:2021-10-09 16:30:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 15:04:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计