CSS-6 border图形;Web字体;字体图标;精灵图Sprite;鼠标cursor;标准流布局;元素定位position;定位元素的层叠顺序z-index

1_border图形

边框的形状

主要是用来给盒子增加边框的, 但是在开发中我们也可以利用边框的特性来实现一些形状

   <style>
      .box {  //给一个div做样式
        width: 100px;
        height: 100px;
        /* background-color: transparent; */
         //制作三角形
     	 border: 50px solid transparent; //上下边界50,则内容区域消失,只剩下边框
        border-top-color: orange;
   	 box-sizing: border-box;
    	     /* 旋转 */
     	 transform-origin: center 25%;
        transform: rotate(180deg);
     }
    </style>

用CSS 做图案的推荐网站 https://css-tricks.com/the-shapes-of-css/#top-of-site

2_Web字体

2.1_font-family

  • 提供一个或多个字体种类名称,浏览器会在列表中搜寻,直到找到它所运行的系统上可用的字体。
  • 对于传统的web开发人员来说,字体选择是有限的
  • Web-safe 字体,这种默认可选的字体并不能进行一些定制化的需求;

2.2_Web fonts

工作原理

  • 可以使用非系统字体,定制更符合需求的字体

    • 某些收费的字体, 我们需要获取到对应的授权;
    • 公司定制的字体, 需要设计人员来设计
    • 免费的字体, 需要获取到对应的字体文件;
  • 在CSS代码当中使用该字体(重要)

  • 部署静态资源时, 将HTML/CSS/JavaScript/Font一起部署在静态服务器中;

使用过程:

演示:

  • 第一步:在字体天下网站下载一个字体

      https://www.fonts.net.cn/fonts-zh-1.html

      默认下载下来的是ttf文件;

  • 第二步:使用字体

具体步骤:

  1. 新建一个字体文件夹,将字体文件放进
  2. 在style中通过@font-face来引入字体, 需给【字体起名】+提供该字体的文件路径
  3. 设置该字体的font-family: 【字体起名】

注意: @font-face 用于加载一个自定义的字体;

兼容性

  • 在开发中某些浏览器可能不支持该字体, 所以为了浏览器的兼容性问题, 我们需要有对应其他格式的字体;

  • oft/ttf、woff基本兼容市面上的浏览器

  • 兼容写法

    • src用于指定字体资源

      url指定资源的路径

      format用于帮助浏览器快速识别字体的格式;

    • 在src属性写上多个url

      @font-face {
            font-family: "why";
            src: url("./fonts02/AaQingHuanYuanTi.eot"); /* IE9 */
            src: url("./fonts02/AaQingHuanYuanTi.eot?#iefix") format("embedded-opentype"), /* IE6-IE8 */
            url("./fonts02/AaQingHuanYuanTi.woff") format("woff"), /* chrome、firefox */
            url("./fonts02/AaQingHuanYuanTi.ttf") format("truetype"), /* chrome、firefox、opera、Safari, Android, iOS 4.2+ */
            url("./fonts02/AaQingHuanYuanTi.svg#uxfonteditor") format("svg"); /* iOS 4.1- */
      
            font-style: normal;
            font-weight: 400;
          }
    

3_字体图标

3.1_认识

  • 字体可以设计成各式各样的风格,也能设计成图标–>字体图标

  • 字体图标的好处:

    放大不会失真

    可以任意切换颜色

    用到很多个图标时,文件相对图片较小

3.2_使用

  • 字体图标的使用:【需注册登录账号,但不花钱】

​   登录阿里icons(https://www.iconfont.cn/)​  下载代码,并且拷贝到项目中

  • 前提: 将字体文件和默认的css文件导入到项目中【建议开辟一个专门的字体文件夹font】

  • 常见的有两种方式

    【本质还是字体,还可以通过font-size/font-color设置样式】

    方式一: 通过对应字体图标的Unicode来显示代码;

    • 先在style中用@font-face引入
    • 然后打开下载的字体图标网页,找到对应的字符实体编号,在中用标签内容中填充对应字符实体编号

    方式二: 利用已经编写好的class, 直接使用即可;

    • A方案【链接】

      第一步: 在style>通过link引入iconfont.css文件

      第二步: 在body中用i标签,类名 与iconfont.css文件名相同

    • B方案【伪元素】

      第一步:先在style中用@font-face引入,并且把 下载字体图标的CSS样式 复制进来;

      **第二步:**在body中用标签,类名用 “字体图标的css”中的

4_精灵图CSS Sprite

4.1_认识

  • CSS图像合成技术,将各种小图片合并到一张图片上,然后利用CSS的背景定位来显示对应的图片部分

  • 好处

    • 减少网页的http请求数量,加快网页响应速度,减轻服务器压力
    • 减小图片总大小
    • 解决了图片命名的困扰,只需要针对一张集合的图片命名
  • Sprite图片制作(雪碧图、精灵图)

      方法1:Photoshop, 设计人员提供

      方法2:网站制作 https://www.toptal.com/developers/css/sprite-generator

  • 总结——网页可以设置图标的方法

    • img、background-img(缩写bgi)、border、svg
    • 字体图标、精灵图

4.2_使用

  • 原理是通过只显示图片的很小一部分来展示的

  • 先把精灵图文件放在图片文件夹,然后在

5_cursor

鼠标指针在元素上的样式

常见的值

  • auto:浏览器根据上下文决定指针的显示样式,比如根据文本和非文本切换指针样式

  • default:由操作系统决定,一般就是一个小箭头

  • pointer:一只小手,鼠标指针挪动到链接上面默认就是这个样式

  • text:一条竖线,鼠标指针挪动到文本输入框上面默认就是这个样式

  • none:没有任何指针显示在元素上面


6_标准流布局

6.1_默认情况下

元素都是按照normal flow(标准流、常规流、正常流、文档流)进行排布

​   从左到右、从上到下按顺序摆放好;

​   默认情况下,互相之间不存在层叠现象

6.2_margin-padding位置调整

在标准流中,可以使用margin、padding对元素进行定位, 其中margin还可以设置负数

比较明显的缺点

  设置一个元素的margin或者padding,通常会影响到标准流中其他元素的定位效果;

  不便于实现元素层叠的效果

希望一个元素可以跳出标准流布局,单独对某个元素进行定位,通过position属性来进行设置;


7_元素定位

7.1_认识元素定位

  • 定位允许从正常的文档流布局中取出元素,并使它们具有不同的行为

​   例如放在另一个元素的上面;

​   或者始终保持在浏览器视窗内的同一位置;

  • 常用于开发中

7.2_认识position属性值

静态定位 static

  • 默认值

​   元素按照normal flow布局

​   left 、right、top、bottom没有任何作用

相对定位 relative

  • 元素按照标准流布局,

  • 可以通过left、right、top、bottom进行定位。​ 定位参照对象是元素left、right、top、bottom自己原来的位置

  • left、right、top、bottom用来设置元素的具体位置【向左右上下调整,正负值方向相反】

  • 相对定位的应用场景。 在不影响其他元素位置的前提下,对当前元素位置进行微调

  • 案例【让一张图片随着浏览器的宽度调整居中】

简单解决:

      <style>
        body {
          margin: 0;
          padding: 0;
        }
    
        .box {
          height: 489px;
          background-color: #f00;
          background: url(../images/mhxy.jpg) center;
           /* center即可居中 */
        }
      </style>
    
    <body>
        <div class="box"></div>
    </body>

realative解决:

      <style>
          body {
            margin: 0;
            padding: 0;
          }
      
          .box {
            height: 489px;
            background-color: #f00;
            overflow: hidden;
          }
      
          .box img {
            position: relative;
            /* left: 该值是图片宽度的一半 */
            left: -960px;
            /* translate中的百分比是相对于自己 ,第三种解决方法*/
            /* transform: translate(-50%); */
      
            /* 向右边移动div的一半 */
            margin-left: 50%;
          }
        </style>
      
      <body>
          <div class="box">
          <img src="../images/mhxy.jpg" alt="">
          </div>
      </body>

固定定位 fixed

  • 元素脱离标准流normal flow(脱标
  • 可以通过left、right、top、bottom进行定位
  • 定位参照对象是视口(viewport),浏览器用户可见窗口大小
  • 当画布滚动时,固定不动

画布 Canvas

  • 用于渲染文档的区域

  • 文档内容超出视口范围,通过滚动查看

视口 Viewport

  • 文档的可视区域

  • 从面积大小来看,画布 >= 视口

绝对定位 absolute

  • 元素脱离标准流normal flow(脱标

  • 可以通过left、right、top、bottom进行定位

    • 定位参照对象是最邻近的定位祖先元素
    • 如果找不到这样的祖先元素,参照对象是视口

定位元素:​position值为relative、absolute、fixed的元素, position值不为static的元素。

子绝父相

  • 大数情况,子元素的绝对定位都是相对于父元素进行定位

  • 子元素相对于父元素定位,又不让父元素脱标,解决方案【“子绝父相】

    • 父元素设置position: relative​ (让父元素成为定位元素,而且父元素不脱离标准流)

    • 子元素设置position: absolute(然后再设置Left、right…)

粘性定位sticky【新值】

​   可看做是相对定位和固定(绝对)定位的结合体;

​   它允许被定位的元素表现得像相对定位一样,直到它滚动到某个阈值点;

​   当达到这个阈值点时, 就会变成固定(绝对)定位;

​  sticky是相对于最近的滚动祖先包含滚动视口的(the nearest ancestor scroll container’s scrollport )
在这里插入图片描述

7.3_元素position值为absolute/fixed的特点


特点一

  • 随意设置宽高

  • 宽高默认由内容决定

  • 不再受标准流的约束

​   不再严格按照从上到下、从左到右排布;
​  不再严格区分块级(block)、行内级(inline),行内块级(inline-block)的很多特性都会消失

  • 不再给父元素汇报宽高数据。​ 当父元素内部仅仅只有该元素,而该元素position值为absolute/fixed,那么父元素的空间将会消失

  • 脱标元素内部默认还是按照标准流布局

特点二

  • 绝对定位元素。position值为absolute或者fixed的元素 (这里的父元素:定位参照对象是最邻近的定位祖先元素)

  • 对于绝对定位元素来说

    • 父元素的宽度 = left + right + margin-left + margin-right + 绝对定位元素的实际占用宽度

    • 父元素的高度 = top + bottom + margin-top + margin-bottom + 绝对定位元素的实际占用高度

  • 希望绝对定位元素的宽高和父元素一样,可以给绝对定位元素设置属性

left: 0、right: 0、top: 0、bottom: 0、margin:0
  • 希望绝对定位元素在父元素居中显示,可以给绝对定位元素设置属性
left: 0、right: 0、top: 0、bottom: 0、margin: auto
//另外,还得设置具体的宽高值(宽高小于定位参照对象的宽高)

7.4_绝对定位的练习案例

 <style>
      /* 重置代码 */
      a {
        text-decoration: none;
        color: #333;
      }

      /* 公共的CSS */
      .sprite_01 {
        background-image: url(../images/music_sprite_01.png);
        display: inline-block;
      }

      .sprite_02 {
        background-image: url(../images/music_sprite_02.png);
        display: inline-block;
      }

      .sprite_02_icon_music {
        width: 14px;
        height: 11px;
        background-position: 0 -24px;
      }

      .sprite_02_icon_play {
        width: 16px;
        height: 17px;
        background-position: 0 0;
      }

      /* 布局代码 */
      .item {
        width: 140px;
        margin: 0 auto;
        /* 居中显示 */
      }

      .item .top {
        position: relative;
        /*父元素*/
      }

      .item .top img {
        /* 将图片下面的多出来的区域去除 ,有两种方法*/
        vertical-align: top;
        /* display: block; */
      }

      .item .top .cover {
        /* 对封面链接样式做设置,让用户一点击封面区域就能跳转链接 */
        position: absolute;
        /* absoluete让该元素相对于 .top参考定位 ,达到上诉效果 */
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;

        background-image: url(../images/music_sprite_01.png);
        background-position: 0 0;
      }

      .item .top .info {
        position: absolute;
        bottom: 0;
        left: 0;
        right: 0;
        height: 27px;
        padding-left: 10px;
        line-height: 27px;
        /* line-height与height数值相同可以让文字在垂直方向居中 */

        font-size: 12px;
        color: #ccc;

        background-image: url(../images/music_sprite_01.png);
        background-position: 0 -537px;
      }

      .item .top .info .icon-music {
        position: relative;
        top: 1px;
        /* display: inline-block; */
        /* width: 14px;
      height: 11px; */

        /* background-image: url(../images/music_sprite_02.png); */
        /* background-position: 0 -24px; */
      }

      .item .top .info .count {
        margin-left: 4px;
      }

      .item .top .info .icon-play {
        position: absolute;
        top: 0;
        bottom: 0;
        right: 10px;
        margin: auto 0;

        /* display: inline-block; */
        /* width: 16px;
      height: 17px; */
        /* background-image: url(../images/music_sprite_02.png); */
        /* background-position: 0 0; */
      }

      /* 底部的样式 */
      .item .bottom {
        display: block;
        margin-top: 8px;
        font-size: 14px;
      }

      .item .bottom:hover {
        text-decoration: underline;
      }
    </style>
    
    <body>
    <div class="item">
      <div class="top">
        <img src="../images/music_album01.jpg" alt="音乐封面" />
        <a class="cover" href="#"></a>
        <div class="info">
          <i class="sprite_02 sprite_02_icon_music icon-music"></i>
          <span class="count">62</span>
          <i class="sprite_02 sprite_02_icon_play icon-play"></i>
        </div>
      </div>
      <a class="bottom" href="#"> 天气好的话,把耳机分给我一半吧 </a>
      <i class="sprite_02 sprite_02_icon_play"></i>
      <i class="sprite_02 sprite_02_icon_music"></i>
    </div>
  </body>

7.5_CSS属性 z-index

z-index属性用来设置定位元素的层叠顺序(仅对定位元素有效),取值可以是正整数、负整数、0【一般默认是0】

比较原则:

​ (1)兄弟关系

​ z-index越大,层叠在越上面;

​ z-index相等,写在后面的那个元素层叠在上面;

​ (2) 不是兄弟关系:

​ 各自从元素自己以及祖先元素中,找出最邻近的2个定位元素进行比较;

​ 而且这2个定位元素必须有设置z-index的具体数值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值