关卡四:CSS 定位,元素的显示隐藏

【学习前提】

  • 理解什么是HTML
  • 掌握HTML语义化标签,并会合理使用标签

阶段说明

CSS主要是用于美化网页及网页的布局学完本阶段的知识后,需要掌握的技巧有:

  • 掌握定位的布局方法
  • 知道精灵图和图标字体的使用 

【学习技巧】

掌握每种定位布局的参照位置及区别,知道精灵图的作用及使用步骤。

一、定位的布局方法

1、为什么使用定位
        浮动可以让多个块级盒子一行没有缝隙排列显示, 经常用于横向排列盒子。
        定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
2、定位组成
        定位:将盒子定在某一个位置,所以定位也是在摆放盒子, 按照定位的方式移动盒子
定位也是用来布局的,由两部分组成:定位 = 定位模式 + 边偏移  
        定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。
        边偏移就是定位的盒子移动到最终位置。有"left", "top", "right","bottom"
注意:定位的盒子有了边偏移才有价值。 一般情况下,凡是有定位地方必定有边偏移。
3、定位模式介绍
        1.相对定位(relative)
            在移动位置时是相对于这个元素原来的位置来对其定位。
            原来的位置继续占有,没有脱离文档流
        2.绝对定位(absolute)
            使用绝对值来对元素进行定位。在移动位置时是相对于它祖先元素来定位。
            不占位置,脱离文档流;
没有父元素或父元素没有定位就以浏览器为准定位,有就以最近一级有定位的祖先元素作为参考点。
            与浮动对比:
                脱离文档流,利用边偏移指定准确位置
                脱离文档流,不能指定准确位置,让多个块级元素在一行显示
            “子绝父相”
            父级要占有位置,子级要任意摆放,这就是子绝父相的由来,所以相对定位经常用来作为绝对定位的父级。
            因为父级需要占有位置,因此是相对定位, 子盒子不需要占有位置,则是绝对定位。当然,子绝父相不是永远不变的,如果父元素不需要占有位置,子绝父绝也会遇到。
        3.固定定位(fixed)
            相对于浏览器可视区来对元素进行定位。可以在浏览器页面滚动时元素的位置不会改变
            不占位置,脱离文档流;只以浏览器窗口为参照点移动元素。跟父元素没有任何关系,且不随滚动条滚动。
        4.粘滞定位 (sticky)
            粘滞定位占有原先的位置,不脱离文档流
            以浏览器的可视窗口为参照点移动元素
粘滞定位可以在元素到达某个位置时将其固定,不随滚动条滚动而滚动。
            必须添加 top 、left、right、bottom 其中一个才有效
        5.静态定位(static)
            静态定位是元素的默认定位方式,无定位的意思;布局时几乎不用。
    

堆叠顺序(z-index)
        出现盒子重叠的情况,可以使用z-index来控制盒子的前后次序 (z轴)
        数字后面不能加单位;z-index只能应用于相对定位、绝对定位和固定定位的元素,其他标准流、浮动和静态定位无效。
        属性值:正整数、负整数或0,默认值是 0,数值越大,盒子越靠上;
        属性值相同,则按照书写顺序,后来居上
4、定位(position)的拓展
        绝对定位的盒子居中:left:50% + margin-left:-1/2盒子宽度
        定位特殊特性:
            行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
            块级元素添加绝对或者固定定位,如果不给宽度或者高度,默认大小是内容的大小。
        脱离文档流的盒子不会触发外边距塌陷,也就是说,我们给盒子改为了浮动或绝对/相对定位,就不会有垂直外边距合并的问题了。
        绝对定位(固定定位)会完全压住盒子
            浮动元素不同,只会压住它下面文档流的盒子,但是不会压住下面文档流盒子里面的文字(图片);但是绝对定位(固定定位) 会压住下面标准流所有的内容。
            浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的。 文字会围绕浮动元素。

二、精灵图

1、为什么需要精灵图
        目的:为了有效地减少服务器接收和发送请求的次数,提高页面的加载速度,出现了 CSS 精灵技术(也称 CSS Sprites、CSS 雪碧)。
        核心原理:将网页中的一些小背景图像整合到一张大图中 ,这样服务器只需要一次请求就可以了。
2、精灵图(sprites)的使用
        针对于小的背景图片,把多个小背景图片整合到一张大图片中;
        移动背景图片位置,使用background-position;
        一般情况下都是往上往左移动,所以数值是负值。

三、图标字体

1、字体图标iconfont的产生
        主要用于显示网页中通用、常用的一些小图标
        为前端工程师提供一种方便高效的图标使用方式,展示的是图标,本质属于字体
2、字体图标的优点
        1.轻量级:一个图标字体要比一系列的图像要小。一旦字体加载了,图标就会马上渲染出来,减少了服务器请求。
        2.灵活性:本质其实是文字,可以很随意的改变颜色、产生阴影、透明效果、旋转等。
        3.兼容性:几乎支持所有的浏览器,请放心使用。
        注意:字体图标不能替代精灵技术,只是对工作中图标部分技术的提升和优化。
3、字体图标的下载
         iconfont字库 http://icomoon.io
         阿里iconfont字库 http://www.iconfont.cn/
4、字体图标的引入
        1.把下载包里面的 fonts 文件夹放入页面根目录下
        2.在 CSS 样式中全局声明字体: 简单理解把这些字体文件通过css引入到我们页面中

            @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;
 }


        3.html 标签内添加小图标:<span> ~ <span>
        4.给标签定义字体:

 span {
     font-family: "icomoon";
   }


5、字体图标的追加
        如果工作中,原来的字体图标不够用了,我们需要添加新的字体图标到原来的字体文件中。
        把压缩包里面的 selection.json 从新上传,然后选中自己想要新的图标,重新下载压缩包,并替换原来的文件即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值