01-HTML+CSS

前端开发

一、HTML常用标签

1、文本格式化表钱

:加粗表钱

:倾斜

:删除线

:下划线

2、容器标签

:标签用来布局,但是现在一行之呢个放一个。大盒子
:标签用来布局,一行上可以多个。小盒子

3、图像标签

  • img标签
    • src:文件路径
    • alt:当图片不显示的时候用文字替换
    • title:当鼠标经过出现文字提示
    • width:设置宽度
    • height:设置高度
    • border:设置边框
<img src="" alt="" />

4、超链接标签

  • a

    • href:连接地址/下载的压缩文件

    • target:打开的方式

      • _self:覆盖当前窗口
      • _blank:重新打开一个窗口
    • #:空连接

  • 锚点连接

<a href="#two">锚点连接</a>
<h3 id="two">
    锚点连接的位置
</h3>

5、注释和特殊字符

  • 注释
<!--注释-->
  • 特殊字符
&nbsp: 空格
&lt: <
&gt: >    

6、表格结构标签

  • thead:头部区域
  • tbody:主题区域
  • table
    • cellpadding:数据和单元格的间距
    • cellspacing:单元格与单元格之间的间距

7、合并单元格

  • rowspan:跨行合并
  • colspan:跨列合并

8、列表标签

  • ul:无需列表
<ul>
    <li>榴莲</li>
    <li>臭豆腐 </li>
</ul>
  • 自定义列表
<dl>
    <dt>关注我们</dt>
    <dd>新浪微博</dd>
    <dd>官方微信</dd>
</dl>

9、表单标签(form)

9.1、input输入表单元素
  • input:输入框
    • radio:单选框(需要相同的name)
      • checked:打开页面时默认选中
      • nane:元素名称
      • value:元素数值
      • maxlength:输入的最大长度
    • checkbox:复选框(需要相同过的name)
    • reset:重置
    • button:按钮
    • file:文件域
    • hidden:隐藏域
<form action="/oa/name" method="post" name="name1">
    用户名:<input type="text">
    密码:<input type="password">
    <input type="submit" value="登录"> <br>
    <input type="reset" value="重置"><br>
    <input type="button" value="提交按钮">
</form>
  • lable标签用于绑定一个表单元素,当点机标签内的文本时,浏览器就会自动讲焦点选择到对应的表单元素上,用来增加用户体验
  • lable属性要和元素的id相同
<input type="radio" id="target">
<lable for="target"></lable>
9.2、select下拉表单元素
  • selected:当页面打开时默认出现”山东“
<form>
    籍贯:
    <select>
        <option>山东</option>
        <option>广东</option>
        <option selected="selected">山东</option>
    </select>     
</form>
9.3、textarea文本域元素
  • cols:一行写五十个字
  • rows:五行
<form cols="50" rows="5">
        今日反馈
        <textarea>
            默认文字
        </textarea>
</form>

二、CSS基本样式

1、代码风格

  • 在标签后面有一个空格
  • 以键值对的形式添加属性
  • 在冒号后面也有一个空格
h3 {
	color: pink;
	fonrt-size: 20px;
}

2、类选择器

  • 样式点定义,结构类(class)调用 一个或多个 (可复用)
.red {
	color: pink;
}
.font35{
	font-size: 35px;
}

<p class="red font35">红色</p>

3、id选择器

  • 样式#定义,结构id调用,只能调用一次(一次性)
#pink {
	color: pink;
}

<p id="#pink">pink</p>

4、通配符选择器

  • 以* 定义,选择所有页面中的元素
* {
	color: pink;
}

5、字体

  • font-family:“微软雅黑”

  • font-size: ”文字大小“

    • 单位:px
  • font-style:“文本风格”

    • 斜体:italic
    • 正常:normal
  • font-weight:“粗细”

    • 正常:400
    • 粗体:700
  • 复合属性

    • 必须严格按照舒徐的要求
    • 必须存在font-size,font-family
/**
	font:font-style font-weight font-size/line-height font-family
**/
div {
	font: italic 700 16px "Microsoft yahei"
}

6、文本属性

  • color:文本颜色

    • 颜色英文名

    • 十六进制

    • RGB代码t

  • text-align:对齐方式

  • text-decoratin:修饰文本

    • none:没有装饰线
    • underline:下划线
  • text-indet:文本缩进

    • 2em:相对于两个文字的大小
  • line-height:行高

    • 字体默认为16px
    • 上下间距分别分到5px;
p{
	line-height:26px;
}
<div>行间距</div>

7、外部样式表

  • rel:指定当前文件和连接文件之间的关系
  • href:文件的路径
<link rel="stylesheet" href="css文件路径">

三、Emmet语法

1、生成html标签

  • 快速生成3个div
//div*3
<div></div>
<div></div>
<div></div>
  • 快速生成ul中的li
// ul>li*3
<ul>
    <li></li>
    <li></li>
    <li></li>
</ul>
  • 兄弟标签
// div+p
<div></div>
<p></p>
  • 带类名的标签(默认是div)
//.table
<div class="table"></div>
//#table
<div id="table"></div>
  • 如果生成的div类名是有顺序的,可以用自增符号$
// .table&*5
<div class="table1"></div>
<div class="table2"></div>
<div class="table3"></div>
<div class="table4"></div>
<div class="table5"></div>
  • 如果想要生成的标签内些内容可以用{}标识
//.table{$}*5
<div class="table">1</div>
<div class="table">2</div>
<div class="table">3</div>
<div class="table">4</div>
<div class="table">5</div>

2、生成CSS标签

.one {
	w100;
}

.one {
	width: 100px;
}

四、CSS的复合选择器

1、后代选择器(重要)

  • ul:父亲
  • li:任意后代
ul li {
	color: pink;
}
ul li a {
	color: red;
}
.nva li a {
	color:red
}

2、子选择器(重要)

  • 只能选择亲儿子的元素
ul > li{
    color: pink;
}

3、并集选择器(重要)

  • 并集选择器竖着写
div,
p, 
.pig li{
	color: red;
}

4、伪类选择器

  • a:link:未被访问

  • a:gisited:已被访问

  • a:hover:鼠标位于连接

  • a:active:鼠标按下没松开

  • 注意事项:按照LVHA的顺序生命

  • 开发习惯

a {
	color: #333;
    text-decoration: none;
}
a {
    color: #369
    text-decoration: underline;
}

5、伪类选择器

  • focus:光标
input:focus{
	backgroud-color: pink;
}

五、CSS的元素显示模式

1、块元素(特点)

  • 常见的块元素

    ~

    • 特点

      • 独占一行

      • 高度,宽度,外边距

      • 默认宽度(100%)

      • 是一个容器可以存放行内或者块级元素

    • 注意

      • 文字类的元素不能放块级元素

      • 标签主要存放文字,不能放快级元素
      • 同理,

        ~

        等都是文字类块级标签,类里面也不能放其他块级元素

    2、行内元素

    • 特点

      • 相邻的行内元素,一行可以显示多个
      • 高度、宽度设置是无效的
      • 默认宽度就是它本身内容的高高度
      • 行内元素只能容纳文本或者其他行内元素
    • 注意

      • 连接中不能嵌套连接
      • 可以存放块级元素

    3、行内块元素

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

    4、元素转化

    • 将行内元素转换成块级元素
    a {
        display: block;
    }
    
    • 转换成行内元素
    div {
        display: inline;
    }
    
    • 转换成行内块元素
    span {
        display: inline-block;]
    }
    

    六、背景颜色

    1、背景图片

    • backgroud-image:背景图片
    div{
        backgroud-image: none | url();
    }
    

    2、背景平铺

    • backgroup-repeat
    div{
    	backgroud-repeat: no-repat;
    }
    

    3、背景图片位置

    • backgroud-position
    backgroud-position: center,top;
    

    4、背景固定

    //固定
    backgroud-attachment: fixed
    //滚动
    backgroud-attachment: scroll
    

    5、混合代码

    backgroud:颜色 图片地址 平铺 滚动 图片位置
    

    6、半透明

    • r:红色
    • g:greed
    • b:blue
    • a:透明度
    div {
        backgroud: rgba(0,0,0,0.6  )
    }
    

    七、CSS三大特性

    1、层叠性

    • 就近原则
      • 元素距离css样式越近就触发
    • 样式不冲突,不会层叠
    div {
    	color: red;
    	font-size: 90px;
    }
    div {
    	color: pink;
    }
    输出的结果则是字体90px,颜色为粉色
    

    2、继承性

    • 子承父业
    • 只会继承字体的样式
    div {
    	color: pink;
    }
    <div>
        <p>继承div的css</p>
    </div>
    
    特殊:行高继承
    body {
        font: 20px/1.5 'Microsoft YaHei';
        //1.5指的是文字大小的1.5倍
    }
    

    3、优先级

    选择器权重
    继承 或者 *0,0,0,0
    元素选择器0,0,0,1
    类选择器,伪类选择器0,0,1,0
    ID选择器0,1,0,0
    行内选择器 style=“”1,0,0,0
    !important 重要的无穷大
    权重叠加
    • 权重不可以叠加
    //  0,0,0,1 + 0,0,0,1 = 0,0,0,1
    ul li{
        color: green;
    }
    // 0,0,1,0
    li {
    	color: pink;
    }
    <ul>
    	<li>大猪肘子</li>
    </ul>
    //结果:大猪肘子是粉色的
    
    • 案例
    //权重为:11
    .ul li {
    	color: red;
    }
    //权重为:10
    .li {
    	color: pink;
    	font-weight: 700;
    }
    <ul class="ul">
    	<li class="li">人生四大悲剧</li>
    </ul>
    //结果:“人生四大悲剧”字体为red,加粗
    

    八、盒子模型

    1、盒子的边框

    • border
      • border-width:粗细
      • border-style:solid实线 | dashed 虚线边框 | dotted 点线边框
      • border-color:边框颜色
      • border-collapse:相邻单元格的边框
    • 混合写法:border:5px solid pink
      • border-bottom:5px solid pink
    • 边框会影响盒子的实际大小

    2、内边距(padding)

    • 内容与盒子的边框的距离
    • 内边距会直接影响盒子的实际大小
    div {
        //上右下左
        padding: 5px 5px 5px 5px;
    }
    
    • 注意
      • 如果给了元素的高度宽度,并且指定的内边距则会影响盒子的实际大小
      • 如果没有指定高度宽度,内边距则不会影响盒子的实际大小

    3、外边距(margin)

    • 与内边距的用法是一样的
    • 外边框塌陷的问题
      • 给父亲元素添加边框(border:1px solid transparent)
      • 给复元素添加内边距(padding:1px )
      • 可以为父元素添加:overflow:hidden

    4、盒子的居中

    • 盒子必须指定宽度,必须是块元素
    • margin:0 auto;
    • 注意
      • 行内元素以及行内块元素是不可以水平据中的
      • 解决的方法:将他们所在的父元素添加text-align:center即可
    5、清楚内外边距
    * {
    	padding: 0;
        margin: 0;
    }
    
    • 注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外。但是转换为块级或是行内块元素就可以了

    6、圆角边框

    //圆形
    div {
        width: 100px;
        border-radius:50%; 
    }
    //圆角矩形
    div {
        height: 100px;
        border-radius:50px;
    }
    

    7、盒子阴影

    • box-shadow:
      • h-shadow:水平阴影的位置
      • v-shadow:垂直阴影的位置
      • blur:模糊距离
      • spread:尺寸
    div {
        box-shadow: 10px 10px 10px 10px block;
    }
    

    九、PS的基本操作

    1、基本使用

    • 打开标尺:Ctrl+r | 试图 -> 标尺
    • 右击标尺,把里面的单位改为像素
    • Ctrl + 加号 可以放大视图
    • 按住空格键,鼠标可以变成小手
    • 用选取拖动
    • Ctrl + D 可以取消选区

    2、切图

    2.1、图层切图
    • 选中需要的图层:图层菜单->合并图层(ctrl + e)
    • 右击->快速导出为PNG
    2.2、切片切图
    • 文件菜单->导出->存储为web设备所用格式->选择我们要的图片格式->存储
    2.3、PS插件切图
    • 官网:www.cutterman.cn/zh/cutterman
    • 注意:必须要使用完整版

    十、传统网页布局的三种方式

    1、浮动(float)

    • 多个块级元素冲纵向排列找标准流,
    • 多个块级元素横向排列找浮动
    1.1、浮动特性
    • 浮动的元素的会脱离标准流(脱靶)

      • 脱离标准流普通的控制(浮)移动到特定位置(动)
      • 浮动的盒子不再保留原先的位置
    • 如果多个盒子都设置了浮动,则他们会按照属性值一行内显示并且顶端对齐排列

      • 注意:中间没有缝隙,更行内块元素不一样
    • 给一个行内元素添加浮动可以变成行内块元素。

    • 浮动元素都具有行内块元素的特性

    2、浮动布局注意点

    2.1、浮动和标准流的父盒子搭配
    • 先用标准流的复元素排列上下位置,后面子元素取浮动排列左右位置
    2.2、一个元素浮动了,理论上其余的兄弟元素也会浮动
    • 浮动的盒子只会影响浮动盒子后元素的标准流,不会影响前面的标准流。

    十一、CSS定位

    1、定位组成

    • 定位 = 定位模式 + 边偏移

    2、定位模式

    • 定位模式决定元素的位置方式,它通过position
    语义
    static静态定位
    relative相对定位
    absolute绝对定位
    fixed固定定位
    1.1、静态定位 static(了解)
    1.2、相对定位 relative(重要)
    • 相对定位是元素在移动位置的时候,是相对于它原来的位置来说的(自恋型)
    • 相对定位的特定
      • 它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)
      • 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它(不脱靶,继续保留原来的位置)
    1.3、绝对定位 absolute(重要)
    • 绝对定位是元素子啊移动位置的时候,是相对于它祖先元素来说的(拼爹型)
    • 绝对定位的特定
      • 没有祖先元素或者祖先元素没有定位,则以浏览器为准定位
      • 如果祖先元素有定位,则以最近以及的有定位的祖先元素为参考移动位置
      • 绝对定位不再占有原先的位置
    1.4、子绝父相的由来
    1. 子级绝对定位,不会占有位置,可以放到父盒子里面的任何一个地方,不会影响其他的兄弟盒子。
    2. 父盒子需要加定位限制盒子在父盒子内显示
    3. 父盒子布局时,需要占有位置,因此父亲只能时相对定位
    • 总结:因为父级需要占有位置,因此时相对定位,子盒子不需要占有位置,则时绝对定位
    1.5、固定定位(重要)
    • 固定定位是元素固定与浏览器可是去的位置。

    • 特定

    1. 元素以浏览器为参照物来进行移动
    2. 跟父元素的定位没关系
    3. 固定定位不占有原来的位置
    • 固定定位小技巧:固定在版心右侧显示
    div {
        position: fixed;
        left: 50%;
        margin-left: 300px;
    }
    
    1.6、粘性定位(了解)
    • 特定
    1. 以浏览器的可视窗口为参照点移动元素(固定定位的特点)
    2. 粘性定位占有原先的位置(相对定位特点)
    3. 必须添加top起中一个才有效。
    1.7、定位叠放 z-index
    • 数值可以是正负整数,默认是auto,数值越大,盒子越靠上
    • 如果属性值相同,则按照书写的新婚徐,后来居上
    • 数字后面不能加单位
    • 只能定位的盒子才有z-index属性
    1.8、定位拓展
    • 定位特殊性

      • 行内元素添加绝对或者固定定位,可以直接设置高度和宽度
      • 块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小
      • 脱标的盒子不会触发外边距塌陷
    • 绝对定位和浮动的区别

      • 浮动(float):是占有原来的位置的,并且最开始浮动是用来做文字环绕效果的
      • 绝对定位(absolute):不占有原来的位置

    3、细节问题

    • 水平居中问题:只有相对定位才具有水平居中的功能,而绝对定位和固定定位可以通过算法的发视实现水平/垂直居中

    十二、元素的显示和隐藏

    1、display 属性(重点)

    • display:none;隐藏对象
    • display:block;转换成块级元素之外,同时还有显示元素的意思
    • 注意:display隐藏元素后,不再占有原来的位置
    • 后面

    2、visibility 可见性

    • visibility:visible;元素可视
    • visibility:hidden;元素隐藏
    • 注意:隐藏元素后,继续占有原来的位置
    • 与display的区别
      • display隐藏是不占原来的位置的
      • visibility隐藏是占有原来的位置的

    3、overflow 溢出

    • overflow:hidden;将溢出的内容部分隐藏
    • overflow:visible;溢出显示(默认)
    • overflow:scroll;溢出显示滚动条
    • overflow:auto;超出使用滚动条

    十三、CSS高级技巧导读

    1、精灵图

    1.1、精灵图的由来
    • 精灵图为了有校地减少服务器接受和发送请求的次数,提高页面的加载速度 ,出现了CSS精灵技术
    1.2、精灵图(sprites)的使用
    1. 精灵图是把多个小背景图片整合到一张大图片中
    2. 这个大图片也称为sprites 精灵图 或者 雪碧图
    3. 移动背景图片位置,此时额可以使用backgroud-position
    4. 移动的距离就是这个目标图片x和y坐标(要使的图片向左边移动数值就是要负数)
    5. 因为一般情况下都是往上往左一定,所以是赋值

    2、字体图片

    • 精灵图是有诸多优点的,但是缺点很明显
    1. 图片文件还是比较大的
    2. 图片本身放大和缩小会失真
    3. 一旦图片制作完毕想要更换非常复杂
    • 字体图标可以作为前端工体一种方便高效的图片使用方式,展示的是图标,本质是字体
    • 总结:比较简单的小图标,可以使用字体图标
    2.1、网站
    • icommon 字库 icomoon.io (国外)
    • iconfont 字库 iconfont.cn(阿里巴巴)
    2.2、字体图标的引用
    • 讲压缩包解压出来的文件放到项目的根目录下
    • 并通过类名的形式引入进来
    2.3、字体图标的追加

    3、CSS三角

    • 想得到一个三角形,将其他的三个边设置成透明的颜色就可以了。
    .box {
        width: 0;
        height: 0;
        /*为了照顾低版本的兼容性*/
        line-height:0px;
        font-size: 0px;
        border: 50px solid transparent;
        border-left-color: pink;
        margin: 100px auto;
    }
    

    4、用户界面样式

    4.1、鼠标样式
    li {cresor: pointer;}
    
    属性语义
    default默认文本
    pointer小手
    move移动
    text文本
    not-allowed禁止
    4.2、轮廓线
    input {outline: none}
    
    4.3、防止文本域拖拽(resize)
    textarea {resize: none}
    

    5、vertical-align 应用

    5.1、图片、表单和文字对齐
    数值描述
    baseline默认,基线对齐
    top顶端对齐
    middle中部对齐
    bottom底部对齐
    • 图片、表单都属于行内块元素,默认的vertical-align是基线对齐
    • 此时可以给图片、表单这些行内块元素vertical-align属性设置为middle就可以让文字和图片垂直居中对齐了
    5.2、图片底部的空白空隙
    • 分析:以为图片属于行内块元素,并且属性vertical-align的默认是baseline(基线对齐)

    • 解决

      • 1、给图片添加vertical-align:middle/top/bottom
      • 2、把图片转成为块级元素:display:block

    6、溢出的文字用省略号代替

    6.1、单行溢出
    • white-space:nowrao;强制讲文字一行显示
    • overflow:hidden;超出的内容隐藏
    • text-overflow:ellipsis;超出得部分用省略号代替
    div {
        white-space: nowrap;
        overfow: hidden;
        text-overflow: ellipsis;
    }
    
    6.2、多行文本溢出
    • display: -webkit-box; 弹性申诉哦盒子模型显示
    • -webkit-line-clamp;从第几行开始隐藏
    • –webkit-box-orient: vertical;设置伸缩盒对象得子元素的排列方式
    div {
        display: -wbkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
    }
    

    7、常见的布局技巧

    7.1、margin负值运用
    ul li {
    	float: left;
    	border: 1px solid red;
    	margin-left: -1px;
    }
    <ul>
        <li>1</li>
        <li>1</li>
        <li>2</li>
    </ul>
    
    7.2、为什么少了一条边框
    • 分析:因为此时右边的小li压住了左边的右边框
    • 解决:此时可以通过 ul li:hover {z-index: 1; position: relative;broder-color: blue}
    ul li:hover {
        z-index: 1; 
        position: relative;
        broder-color: blue
    }
    
    7.3、文字环绕着图片
    • 将装有图片的盒子设置float:left
    • 在右边默认的标准流文字就可以了
    7.4、三角行高级
    I {
    	position: absolute;
        top: 0;
        right: 0;
        border-color: transparent #fff transparent transparent;
        border-width: 30px 10px 0 0;
        border-style: solid;
    }
    

    十四、HTML5和CSS3的新特性

    • HTML5增加一些新的标签、新得饿表单和新的表单属性等。

      • header:头部标签

      • nva:导航标签

      • article:内容标签

      • section:定义文档某个区域

      • aside:侧边栏标签

      • footer:尾部标签


    • 注意
      • 这种语义化标准是针对搜索引擎的
      • 这些新标签页面中可以使用多次
      • 在IE9中,需要把这些元素转换成块级元素
      • 其实,我们移动端喜欢这些标签
      • HTML5还增加了很多其他标签,我们后面再慢慢学

    1、HTML5 的新特性

    1.1、视频 video
    • video:视频标签
      • 当前video元素标签支持三种视频格式:尽量使用mp4格式
    • 常见属性
    属性描述
    autoplayautoplay自动
    controlscontrols显示播放控件
    widthpixels(像素)宽度
    heightpixels(像素)高度
    looploop循环播放
    preioadauto(预加载)
    none(取消预加载)
    是否预加载视频
    srcurl视频url地址
    posterlmgurl加载等在的图片
    mutedmuted静音播放
    <video src="文件路径" autoplay="autoplay" muted="meted" controls="controls" loop="loop "></video>
    
    1.2、音频 audio
    属性描述
    autoplayautoplay自动播放
    controlscontrols显示控件
    looploop循环播放
    srcurl音频路径
    <audio src="" autoplay="autoplay" controls="controls"></audio>
    
    • 谷歌浏览器把音频和视频自动播放静止了

    • 总结

      • 音频和视频标签使用的方式基本一致
      • 视频找mp4,音频找mp3
      • 谷歌浏览器把音频和视频自动播放禁止了
      • 我们可以给视频添加muted属性来静音播放,音频不可以(可以通过JavaScript解决)
      • 视频标签是重点,我们经常设置自动播放,不使用controls控件,循环和设置大小属性
      1.3、input 类型
    <input type="serach">
    
    属性值说明
    type=“email”必须是Email类型
    type=“url”url类型
    type=“data”日期
    type=“time”实践
    type=“number”数字
    type=“month”
    type=“week”
    type=“tel”手机号码
    type=“search”搜索
    type=“color”颜色
    1.4、新增的表单的属性
    <input type="search" name="" id="" required="required">
    
    属性描述
    requiredrequired必须填写
    placeholder提示文本默认为不显示
    autofocusautofocus自动聚焦
    autocompleteoff / on当用户开始输入时,浏览器基于之前输入过的数值,应该显示处在字段中填写的选项
    multiplemultiple可以多选文件提交

    2、CSS3 的新特性

    • CSS3 新增选择器
      • 属性选择器
      • 结构伪类选择器
      • 伪元素选择器
    2.1、属性选择器
    选择符简介
    E[att]选择具有 att 属性的E元素
    E[att=“val”]选择具有 att 属性且属性值等于 val 的E元素
    E[att^=“val”]匹配具有 att 属性且值以 val 开头的E元素
    E[att$=“val”]匹配具有 att 属性且值以 val 末尾的E元素
    E[att*=“val”]任意匹配具有 att 属性且值以 val 的E元素
    input[value=asdf] {
    	color: pink;
    }
    
    /*类名头部为incon的进行匹配*/
    input[class^=incon] {
     	backgourd-color: pink;
    }
    
    /*类名尾部为data的进行匹配*/
    input[class$=data] {
     	backgourd-color: pink;
    }
    
    /*类名有任意*/
    input[class*=-]{
    	backgourd-color: #ccc;
    }
    
    <input type="text" value="asdf">
    <input type="text">
    
    <div class="icon2">1</div>
    <div class="icon3">1</div>
    <div class="icon4">1</div>
    
    <div class="icon-data">1</div>
    <div class="icon-data">1</div>
    <div class="icon-data">1</div>
    
    
    • 属性选择器,类选择器权重都是10
    2.2、结构伪类选择器
    选择符说明
    E:first-child匹配父元素中的第一个子元素E
    E:last-child匹配父元素中的最后一个子元素E
    E:nth-child(n)匹配父元素中的第几个子元素E
    E:first-of-type指定类型 E 的第一个
    E:last-of-type指定类型 E 的最后一个
    E:nth-of-type(n)指定类型 E 的第 n 个
    • E:nth-child(n)
      • n可以是数字,也可以是关键字和公式
      • n可以是数字,就是选择第几个子元素,里面数字从给1开始…
      • n可以是关键字:even 偶数,odd 奇数
      • n可以是公式
        • 2n:偶数
        • 2n+1:奇数
        • 5n:5 10 15…
        • n+5:从第五个开始一直到最后
        • -n+5:前五个
    /*第一个孩子*/
    ul li:first-child {
    	backgourd-color: pink;
    }
    /*最后一个孩子*/
    ul li:last-child {
    	backgourd-color: pink;
    }
    /*指定*/
    ul li:nth-child {
    	backgourd-color: pink;
    }
    <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </ul>
    
    • section p:first-child:首先找到第一个元素,然后判断该元素是否是P标签
    • section div:first-of-type:首先查看元素的类型,然后再找到该类型的一个出现的位置
    2.3、伪元素选择器(重要)
    选择符简介
    ::before在元素内部的前面插入内容
    ::after在元素内部的后面插入内容
    • 注意

      • befor 和 agter 创建一个元素,但是属于行内元素
      • 新创建的这个元素在找不到的,所以我们成为伪元素
      • 语法:element::befor{}
      • befor 和 ater 必须有 content 属性
      • before 在父元素内容的前面创建元素,after在父元素内容的后面插入元素
      • 伪元素选择器标签选择器一样,权重为1。
    • 伪元素清除浮动原理

    .clearfix:before,.clearfix:after {
        content: "";
        display: table;
    }
    .clearfix:after {
        clear:both;
    }
    
    2.4、CSS3 盒子模型
    • CSS3 中可以通过 box-sizing 来指定盒子模型,有两个值:即可指定为content-box、border-box,这样我们没计算机盒子大小的方式就发生了改变

    • 可以分为两种情况

      1. box-sizing: content-box 盒子大小为:width + padding +border(默认)
      2. box-sizing: border-box 盒子大小为width
    • 如果盒子模型我们改成box-sizing: border-box,那padding和border就不会成大盒子了

    • 注意:padding和border不会超过width宽度

    2.5、CSS3 其他特性
    • CSS3 滤镜filter:
    /*blur模糊处理 数值越大越模糊*/
    div {
        filter: blur(5px);
    }
    
    
    • calc 函数
    div {
        width: calc(100% - 30px);
    }
    
    2.6、CSS3 过度(重点)
    1. 属性:想要变化的 css 属性,宽度高度 背景颜色 内外边距都可以,如果想要所有的属性都过度,写一个all就可以了
    2. 花费时间:单位是 秒(必须写单位)比如0.5s
    3. 运动曲线:默认是 ease(可以省略)
    4. 何时开始:单位是 秒(必须写单位)可以设置延时吃法的时间 默认值是 0s(可以省略)
    div {
        /*transition: 过度的属性 花费时间 运动曲线 何时开始;*/
        transition:width .5s, height .5s;
    }
    div:hover {
        wirdth: 200px;
        height: 300px;
    }
    

    十五、评优购项目

    名称说明
    项目文件夹shopping
    样式类图片文件夹images
    样式文件夹css
    产品类图片文件夹upload
    字体类文件夹fonts
    脚本文件夹js

    1、项目规划

    1.1、模块化开发
    • common.css 公共样式里面包括版心宽度、清除浮动、页面字体颜色等公共样式
    1.2、网站 favicon 图标
    1. 制作favicon图标
      • 将图标切成png图片(没有背景)
      • 将png转换成 ico 图标,www.bitbug.net
    2. favicon图标放到网站根目录下
    3. HTML页面引入favicon图标
    <link rel="shortcut icon" href="favicon.ico">
    
    1.3、网站TDK三大标签SEO优化
    • SEO汉译搜索引擎优化
    • SEO 的目的是对网站进行深度的优化,从而获取免费的流量。
    1. title 网站标题

      • 建议:网站名(产品名)-网站的介绍(尽量不要超过30个汉字)
    2. description 网站说明

      • 简要说网站做什么的
    3. keywords 关键字

      • keywords 是关键字,是搜索引擎的关注之一
    <title>asdl;fkjsdalkfj</title>
    <meta name="description" content="asdfasdfsdaf">
    <meta name="keywords" content="alksdjfklsadjklfjlksj">
    

    2、首页制作

    名称说明
    快捷导航栏shotcut
    头部header
    标志logo
    购物车shopcar
    搜索search
    热点词hotwords
    导航nav
    导航左侧dropdown 包含.dd .dt
    导航右侧navitems
    页面底部footer
    页面底部服务模块mod_service
    页面底部帮助模块mod_help
    页面底部版权模块mod_copyright
    2.1、LOGO SEO 优化
    1. logo 里面首先放一个 h1 标签,目的是为了提权,告诉搜索引擎,这个地方很重要
    2. h1 里面再放一个链接,可以返回首页的,把 logo 的背景图片给链接即可
    3. 为了搜索引擎收录我们,我们链接里面要放**文字(网站名称),**但是不要显示
      • 方法1:text-indent 以到盒子外面(text-indent),然后 overflow:hidden,淘宝的做法
      • 方法2:直接给 **font-size:0; ** 就看不到文字了,京东的做法
    4. 最后给链接一个 title 属性,这样鼠标放到logo上就可以看到提示文字了。

    3、注册页面

    3.1、注册页类名命名
    • 注册页面:register.html
    名称说明
    注册专区registerarea
    注册内容reg-form
    错误的error
    成功的success
    默认的default

    十六、CSS3 2D 转换

    1、2D 转换之移动 transform:translate

    • 定义 2D 转换中的移动,沿着 X 和 Y 轴移动元素
    • translate最大的而有点:不会影响到其他的元素
    • translate中的百分比单位是相对自身元素的 translate(50%,50%)
    • 对行内标签没有效果
    	transform: translate(x,y); 或者分开写
    	如果里面的参数是 “%” 则会按照自身的高度宽度来计算
    	transform: translateX(50%);
    	transform: translateY(n);
    
    • 案例:如何让子元素移动到中心
    div {
        position: relative;
        width: 200px;
        height: 200px;
        backgourd-color: pink;
    }
    p {
        position: absolute;
        top: 50%;
        left: 50%;
        width: 100px;
        height: 100px;
        backgourd-color: purple;
        transform: translate(-50%,-50%);
    }
    

    2、2D 转换之移动 transform:rotate

    • 语法
    img {
        顺时针转圈
        transform: z(45deg); 
    }
    
    • 重点

      • rotate里面跟角度,单位是 deg 比如 rotate(45deg)
      • 角度为正时,顺时针
      • 默认旋转的中心顶啊是元素的中心点
    • 案例:三角形

            .box {
                position: relative;
                width: 249px;
                height: 50px;
                border: 1px solid #333;
            }
    
            .sanjiao {
                position: absolute;
                top: 15px;
                right: 20px;
                width: 10px;
                height: 10px;
                border-right: 1px solid #333;
                border-bottom: 1px solid #333;
                transform: rotate(45deg);
                transition: all 0.2s;
            }
    
            .box:hover .sanjiao {
                transform: rotate(225deg);
            }
    

    3、旋转中心点 transform-origin

    • 语法
      • transform-orgin:x y;
    div {
        左下角旋转
        transform-orgin: left bottom;
    }
    
    • 重点

      • 注意后面的参数 x 和 y 用空格隔开
      • x y 默认转换的中心点是元素的中心点(50% 50%)
      • 还可以给x y 设置 像素 或者 方位名词 (top bottom left right center)
    • 案例

            .box {
                width: 200px;
                height: 200px;
                margin: 100px auto;
                border: 1px solid pink;
            }
    
            .box::after {
                content: "";
                display: block;
                width: 100%;
                height: 100%;
                background-color: pink;
                transform-origin: left bottom;
                transform: rotate(180deg);
                transition: all .2s;
            }
    
            .box:hover::after {
                transform: rotate(0deg);
            }
    

    4、2D 转换之缩放 transform:scale

    1. 语法
    	transform: scale(x,y);
    
    1. 注意
      • 注意起中得x和y用逗号分隔
      • transform:scale(1,1) : 宽和高都放大一倍,相当于没有放大
      • transform:scale(2,2) :宽和高都放大了2倍
      • transform:scale(2) :相当于scale(2,2)
      • transform:scale(0.5,0.5):缩小
      • sacle缩放最大的优势:可以设置转换中心点缩放,默认以中心点缩放的,而且不影响其他盒子
    5、综合写法
    div {
        
    }
    div:hover {
        transform: translate(50px,50px) rotate(180deg)
    }
    
    • 注意
      • 顺序会影响转换的效果(先旋转会改变坐标轴的方向)
      • 当我们同时又唯一和其他属性的时候,记得要将位移放到最前

    十七、CSS3 动画

    1、制作动画 @keyframes

    • 制作动画分为两步
      1. 先定义动画
      2. 再使用动画
    //定义动画
    @keyframes move {
        0% {
            transform: translate(0px);
        }
        100% {
            transform: translate(1000px);
        }
    }
    
    @keyframes move {
        from {
            transform: translate(0px,0px);
        }
        to {
            transform: translate(1000px,0);
        }
    }
    
    
    //使用动画
    div {
        //1、动画名称
        animation-name: move;
        //2、持续时间
        animation-duration:持续时间
    }
    
    • 动画序列
      • 0% 是动画的开始,100% 是动画的完成。这样的规则就是动画序列
      • @keyframes中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果
      • 动画是使元素从一种样式逐渐花边为另一种样式的效果,您可以改变人一多的样式人一多的次数
      • 请用百分比来规定变化发生的时间,或关键词 fromto 等同于 0%100%

    2、常用的动画属性

    属性描述
    @keyframes指定动画
    animation所有动画的简写属性
    animation-name规定动画的名称(必写)
    animation-duration规定动画完成一个周期所花的时间(必写)
    animation-timing-function规定动画的速度曲线,默认是 “ease”
    animation-delay规定动画何时开始,默认是0
    animation-iteration-count规定动画的播放次数,默认是1,还有infinite(循环)
    animation-direction规定动画是否在下一周期逆向播放,默认是“normal” “alternate”逆向播放
    animation-play-state规定动画是否政在运行或者停止。默认是 “running” ,还有 “paused”
    animation-fill-mode规定动画结束后状态,保持forwards回到backwards

    3、动画简写属性

    • animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束状态
    	animation: myfirst 5s linear 2s infinite alternate;
    
    • 简写属性里面不包括 animation-play-state
    • 暂停动画:animation-play-state: puased;经常和鼠标经过等其他配合使用
    • 想要动画走回来,而不是直接跳回来:animation-direction:alternate
    • 盒子动画结束后,停在结束位置:animation-fill-mode:forwards
    4、速度曲线
    描述
    linear匀速
    ease默认。从低速开始,然后加速在结束前变慢
    ease-in动画以低速开始
    ease-out动画以低速结束
    ease-in-out动画以低速开始和结束
    steps()之地那个时间函数中的间隔数量(步长)
    案例:打字机效果
            .box {
                font-size: 20px;
                background-color: pink;
                overflow: hidden;
                white-space: nowrap;
                animation: box 3s linear infinite;
            }
    
            @keyframes box {
                0% {
                    width: 0;
                }
    
                100% {
                    width: 140px;
                }
            }
    
    案例:奔跑的熊大
     	           .bear {
                position: absolute;
                width: 200px;
                height: 100px;
                background: url(./media/bear.png) no-repeat;
                animation: bear .7s infinite steps(8), move 2s ease-out forwards;
    
            }
    
            @keyframes bear {
                0% {
                    background-position: 0, 0;
                }
    
                100% {
                    background-position: -1600px 0;
                }
            }
    
            @keyframes move {
                0% {
                    left: 0;
                }
    
                100% {
                    left: 50%;
                    transform: translateX(-50%);
                }
            }
    

    十八、3D 转换

    1、三维坐标系

    • x轴:水平向右 注意:x 右边是正值,左边是负值
    • y轴:垂直向下 注意:y 下面是正值,上面是负值
    • z轴:垂直屏幕 注意:往外面是正值,往里面是负值

    2、3D移动 translate3d

    • transform:translateX(100px):仅仅是在x轴上移动
    • transform:translateX(100px):仅仅是在y 轴上移动
    • transform:translateX(100px):仅仅是在z轴上移动
    • transform: translate3d(x,y,z):其中 x、y、z 分别汁得是移动的轴的方向的距离

    3、透视 perspective

    1. 透视卸载被观察元素的父盒子上面

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

      • z:就是z轴,物体距离屏幕的距离,z轴越大(正值)我们看到的物体就越大

    2. 注意

      • 距离视觉点越近的电脑平面成像越大,月圆成像越小
      • 透视的单位是像素

    4、3D旋转 rotate 3d

    • transform: rotateX(180deg);沿着x轴正方向旋转180度

      • 左手准则
      • 大拇指指向x轴的方向
      • 剩下的手指弯曲的方向就是x轴旋转的方向
    • transform: rotateY(180deg);沿着y轴正方向旋转180度

      • 左手准则
      • 大拇指指向y轴的方向
      • 剩下的手指弯曲的方向就是y轴旋转的方向
    • transform: rotateZ(180deg);沿着z轴正方向旋转180度

      • 类似于2d的旋转效果
    • transform: rotate3d(x,y,z,180deg);了解即可

    5、3D呈现 transform-style

    • 控制子元素是否开启三维立体环境。
    • transform-style:flat子元素不开启3d立体空间 默认的
    • transform-style:preserve-3d;子元素开启立体空间
    • 代码写给父级,但是影响的是子盒子
    • 这个属性很重要,后面必用
    案例:3D 旋转
           body {
                perspective: 500px;
    
            }
            .box {
                transform-style: preserve-3d;
                position: relative;
                width: 200px;
                height: 300px;
                margin: 200px auto;
                transition: all 1s;
            }
    
            .box:hover {
                transform: rotateY(60deg);
            }
    
            .box div {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background-color: pink;
            }
    
            .box div:last-child {
                transform: rotateX(60deg);
                background-color: skyblue;
            }
    
    • 9
      点赞
    • 24
      收藏
      觉得还不错? 一键收藏
    • 1
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论 1
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值