前端入门:HTML/CSS增强(九/十) P250-272、297

(九)CSS高级技巧

1、精灵图

网页中有很多小的背景图片,如果每加载一张就与服务器通信一次,就会造成较大的请求压力,降低网页的加载速度。

精灵图原理:

       将网页中的一些小背景图整合到一张大图中;

       使用时利用 background-position 将大图中要用的小图移动到盒子上作为背景;

       由于background-position规定沿x轴向左移动是负值,沿y轴向上移动是负值,所以属性值一般为负。

 

 

2、字体图标 iconfont

用字体图标来做结构样式比较简单的图标,可以方便更改大小、颜色等样式,使用起来更灵活;

它是以图标的形式展示,但本质是文字。

(复杂一些的还是用精灵图)

 

使用步骤:

  1. 从网站上下载字体图标的文件;
  2. 将文件中的fonts文件夹复制到当前的页面目录中;
  3. 将style.css文件中的字体声明复制到页面文档的CSS<style>标签里;
  4. 在html的主体body中,添加一个span标签,然后将网站上的小图标复制到span标签中;
  5. 在CSS中给span设置字体 font-family: 'icomoon';同时也可以设置字体大小和颜色。

 

 

3、CSS三角

一个div或span盒子,将其宽度和高度都设为0,然后设置出有宽度的边框,这样四个边的边框都呈现出的是三角形;

如果只需要其中一个方向的三角形,就将边框颜色设为transport,需要留下的那个三角形的颜色设置成其他颜色。

 

 

4、CSS用户界面样式

就是在CSS中设置用户的一些操作样式:

鼠标样式属性 cursor

属性值描述
default默认,小白箭头
pointer小手(点击链接)
move移动十字架
text文本
not-allowed禁止

 

表单轮廓线属性 outline

input { outline: none; }    或    input { outline: none; }    可以去掉点击表单时默认的蓝色边框。

 

防止表单文本域被拖拽放大

textarea { resize: none; }

 

 

5、vertical-align 属性

根据水平线在一行文字上的位置,规定从上到下顶线(最高元素的顶端)、中线、基线、底线(最低元素的底端);

vertical-align 属性:

属性值描述
baseline默认,元素底端放在父元素的基线上
top元素的顶端与行中的顶线对齐
middle元素放在父元素的中部
bottom元素的底端与行中的底线对齐

 

实现行内块和文字垂直居中对齐

给行内块元素(图片、文本域等)设置  vertical-align: middle;

 

解决图片底部默认的空白缝隙

因为图片是行内块元素,默认是与行内文字的基线对齐,所以底部会有基线与底线之间的缝隙;

解决方法:

  • 给图片添加  vertical-align: middle / top / bottom;(提倡)
  • 将图片转换为块级元素 display: block;

 

 

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

单行文本

div {
            /* 1.先强制让文本在一行上显示 */
            /* 默认是自动换行 white-space: normal; */
            white-space: nowrap;
            /*2. 然后隐藏溢出的部分 */
            overflow: hidden;
            /* 3.用省略号代替溢出的文字 */
            text-overflow: ellipsis;
        }

多行文本(兼容性问题,只适合webKit浏览器或移动端)

div {
            overflow: hidden;
            text-overflow: ellipsis;
            /* 以弹性伸缩盒子模型来显示 */
            display: -webkit-box;
            /* 限制文本在块元素内显示的行数 */
            -webkit-line-clamp: 2;
            /* 设置伸缩盒子的子元素的排列方式 */
            -webkit-box-orient: vertical;
        }

 

 

7、布局技巧

(1)margin负值

多个盒子向左浮动时,让每个盒子margin-left = -1px;(若边框为1px),就可以压住相邻盒子的边框。

 

若盒子使用margin负值后,在鼠标经过设置特殊的边框时,被压住的边框就无法设置;

解决:如果盒子没有定位,就在鼠标经过的样式中添加相对定位 position: relative;

           如果盒子已经有定位了,就利用 z-index = 1; 提高层级。

 

(2)文字围绕浮动

浮动不会压住文字的特性;

旁边的元素添加浮动,文字用标准流就可以实现围绕的效果。

 

(3)行内块

实现页面跳转的模块,1、2、3...用行内块盒子(链接)来做,相邻盒子之间有自带的边距,还方便实现水平居中。

 

(4)CSS三角强化——小直角三角形

 只设置上边框和右边框,下、左边框不要,就有两个直角三角形;

然后通过改变边框的宽度,来改变直角三角形的边长。

 

 

8、CSS初始化

是指在文档开头重设浏览器的样式(reset);

不同浏览器对于标签的默认值不同,为了HTML文档在不同浏览器的兼容性,需要对CSS初始化;

如 * { padding: 0;  margin: 0; } 清除所有标签默认的内外边距等。

 

 

(十)H5C3新增特性

1、H5新增

(1)语义化标签

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

语义化标准主要针对搜索引擎,更喜欢在移动端使用;

在IE9中,需要把这些标签元素转换为块级元素。

 

(2)多媒体标签

视频标签: < video  src = "文件地址" ...> </video>

属性属性值描述
autoplayautoplay视频自动播放
controlscontrols显示播放控件
width / height数字px设置播放器宽、高度
looploop循环播放
poster图片地址等待加载是的画面图片
mutedmuted静音播放

谷歌浏览器禁用了自动播放的属性,可以添加 muted 属性实现自动播放;

不同浏览器支持的格式不同,视频格式尽量使用mp4。

 

音频标签: < audio  src = "文件地址" ...> </audio>

属性autoplay、controls、loop、muted等与视频标签的相同;

音频格式尽量使用mp3。


(3)表单input类型(type的属性值)

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

(4)表单属性

属性属性值描述
requiredrequired表单内容不能为空(search类型)
placeholder提示文本直接显示的提示信息(search类型)
multiplemultiple可以选择多个文件提交(文件域 file类型)
autofocusautofocus页面加载后光标自动聚焦到表单上
autocomplete

off / on(默认)

输入时显示出之前输入过的值(search类型,需要有name属性并成功提交过)
/*CSS可以修改提示文字的颜色*/
input::placeholder {
    color: ...;
}

 

 

2、CSS3新增

(1)属性选择器

根据元素属性的某些特点来选择元素,与类选择器、伪类选择器一样权重都为10:

选择符描述
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 元素

 

(2)结构伪类选择器

根据文档结构来选择元素,常用于选择父级元素下的子元素:

选择符描述
E e:first-child选择父元素E中的第一个子元素e
E e:last-child选择父元素E中的最后一个子元素e
E e:nth-child(n)选择父元素E中的第n个子元素e

括号里的 n 可以是数字、关键字和公式:

数字:从1开始计算子元素的排序,如果数字为0或者超出了子元素的个数就会自动忽略;

关键字:even 偶数、odd 奇数;

公式:如2n、2n+1、-n+5(前5个)等,其中n从0开始,每次递增1带入公式。

 

选择符描述
E e:first-of-type选择父元素E中指定元素类型e的第一个子元素
E e:last-of-type选择父元素E中指定元素类型e的最后一个子元素
E e:nth-of-type(n)选择父元素E中指定元素类型e的第n个子元素

-child 和 -of-type 的用法类似,但匹配时的区别为:

child 是先对父元素的所有子元素进行排序,找到要选择的第n个子元素,再看该子元素的类型是否与选择符中的e匹配,若不匹配将不选择;

of-type 是先找到选择符中指定e类型的子元素,对它们进行排序,然后再从中选择第n个。

 

(3)伪元素选择器

利用CSS创建新标签元素,不用在HTML中添加元素,从而简化HTML结构。

选择符描述
E::before在元素E内部的最前面插入子元素
E::after在元素E内部的最后面插入子元素

伪元素选择器与标签选择器一样权重为1;

它创建的是行内元素,且必须有 content 属性。

 

应用场景:

添加字体图标 —— content = '小图标或图标代码';

清除浮动 —— 利用after伪元素在父盒子内部的后面添加清除浮动的标签;

                        双伪元素before和after在前后都添加清除标签。(实质都是额外标签法)

 

(4)盒子模型属性box-sizing

属性值有:

content-box —— 默认,内边距和边框会撑大盒子,盒子大小 = width + padding + border;

border-box —— 内边距和边框不会撑大盒子,盒子大小 = width(padding+border不超过width);

 

 

(5)其他

滤镜属性: filter: 函数();

图片模糊处理 —— filter: blur(5px);   数值越大图片越模糊。

 

calc函数

在CSS属性值中执行一些计算,如:             

                                                          width: calc(100%-80px); 

                                           // 设置盒子的宽度总是比它父盒子宽度少80px

calc函数括号里可以进行 +、-、*、/ 运算。

 

 

(6)过渡

使元素从一种样式变换到另一种样式的过渡效果,经常和 :hover 鼠标经过一起搭配使用。

                                  transition: 变换的属性1  花费时间  运动曲线  开始时间, ... ;

属性值描述
变化的属性宽高度、背景颜色等等,若所有属性都变化就写 all
花费时间数字 + 单位s
运动曲线可省略,默认 ease(逐渐减速),还有linear(匀速)、ease-in/out(加速/减速)、ease-in-out(先加速后减速)
开始时间可省略,设置延迟触发时间,数字 + 单位s

 

 

(7)2D转换

转换(transform 属性):实现元素的位移、旋转、缩放等效果;

特点是添加transform后也不会影响其他盒子的位置 ,但对于行内标签无效;

可以与过渡transition搭配,做出鼠标经过时的动画效果。

 

位移:                                          transform: translate(x, y+单位px);  

                                                                      translateX(n);

                                                                      translateY(n);

当x、y是百分比时,代表相对于自身宽度、高度的数值。

 

旋转:                                          transform: rotate(度数+单位deg);

正值代表顺时针旋转,并且默认以元素的中心点为旋转中心,可以通过设置转换中心来改变。

(下拉小三角符号,可以用正方形边框,然后旋转做出来)

 

缩放:                                                 transform: scale(x, y); 

x、y只是数字,不加单位,代表元素本身宽度、高度的倍数;

可以只写一个数字,使宽高度缩放相同的倍数;

缩放的变化也是默认以元素的中心点为中心,可以通过设置转换中心来改变。

 

设置转换中心:                                    transform-origin: x y;

x、y可以是像素值、百分比或者方位名词。

 

transform 的综合写法:                       transform: translate()  rotate()  scale()...; 

属性值的顺序会影响转换的效果;

所以有位移translate转换时,要把它写在最前面。

 

(8)动画

先定义(类似于 类选择器):

@keyframes 动画名称{
    /* 动画序列  开始状态 */
     0% { 样式... }

      /* 可以加任意的百分比,设置中间的状态 */

     /* 结束状态 */
    100% { 样式... }
}
/* 另一种写法,from等同于0%,to等同于100% */
@keyframes 动画名称{
    from { 样式... }
    to { 样式... }
}

再使用,在要加动画效果的元素样式中调用动画属性:

div {
    /* 调用动画 */
    animation-name: 动画名称;
    /* 持续时间 */
    animation-duration: 持续时间s;
    /* 还有很多其他的动画属性 */
}

动画属性的简写:

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

不包含animation-play-state,它一般与鼠标经过h配合使用。

 

animation-timing-function 还有一个属性值为 steps(n),代表动画分n步变化。

 

(9)3D转换

位移:                                          transform: translate3d(x, y, z+单位px);  

                                                                      translateX(n);

                                                                      translateY(n);

                                                                      translateZ(n);

Z轴方向向外时为正值,向里时为负值;

translateZ后面一般用数字加px单位。

 

透视:                                          perspective: 数字+px;

         其中的数值表示视距,视距越小,元素显示的越大;

         透视属性要写在被观察元素的父盒子上面;

         在透视值确定不变的情况下,改变translateZ越大,元素显示的越大。

 

旋转:                                          transform: rotate3d(x, y, z+单位deg);     ——x、y、z用0或1表示是否选中,同时选中则用矢量45度表示。

                                                                      rotateX(度数+deg);

                                                                      rotateY(度数+deg);

                                                                      rotateZ(度数+deg);

同时加上透视perspective,才能实现3d旋转的效果;

 

3D呈现:                                     transform-style: flat;          ——默认子元素不开启3d空间;

                                                                              preserve  ——子元素开启3d空间;

也是写在被观察元素的父盒子上面。

 

10.11

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值