美文网首页
h5+css黑马笔记

h5+css黑马笔记

作者: 随风飞2019 | 来源:发表于2020-02-10 14:50 被阅读0次
HTML5 新增标签
  1. 新增了那些语义化标签

    • header --- 头部标签
    • nav --- 导航标签
    • article --- 内容标签
    • section --- 块级标签
    • aside --- 侧边栏标签
    • footer --- 尾部标签
  1. 使用语义化标签的注意
- 语义化标签主要针对搜索引擎
- 新标签可以使用一次或者多次
- 在 `IE9` 浏览器中,需要把语义化标签都转换为块级元素
- 语义化标签,在移动端支持比较友好,
多媒体音视频标签
  1. 多媒体标签有两个,分别是
  • 音频 -- audio
  • 视频 -- video
  1. audio 标签说明
  • 可以在不使用标签的情况下,也能够原生的支持音频格式文件的播放,
  • 但是:播放格式是有限的
<body>
  <!-- 注意:在 chrome 浏览器中已经禁用了 autoplay 属性 -->
  <!-- <audio src="./media/snow.mp3" controls autoplay></audio> -->

  <!-- 
    因为不同浏览器支持不同的格式,所以我们采取的方案是这个音频准备多个文件,放置多个source标签
   -->
  <audio controls>
    <source src="./media/snow.mp3" type="audio/mpeg" />
  </audio>
</body>
video 代码演示
<body>
  <!-- <video src="./media/video.mp4" controls="controls"></video> -->

  <!-- 谷歌浏览器禁用了自动播放功能,如果想自动播放,需要添加 muted 属性 -->
  <video controls="controls" autoplay muted loop poster="./media/pig.jpg">
    <source src="./media/video.mp4" type="video/mp4">
    <source src="./media/video.ogg" type="video/ogg">
  </video>
</body>

多媒体标签总结

  • 音频标签与视频标签使用基本一致
  • 多媒体标签在不同浏览器下情况不同,存在兼容性问题
  • 谷歌浏览器把音频和视频标签的自动播放都禁止了
  • 谷歌浏览器中视频添加 muted 标签可以自己播放
CSS3 属性选择器

属性选择器代码演示

button {
  cursor: pointer;
}
button[disabled] {
  cursor: default
}

input[type=search] {
  color: skyblue;
}

span[class^=black] {
  color: lightgreen;
}

span[class$=black] {
  color: lightsalmon;
}

span[class*=black] {
  color: lightseagreen;
}
结构伪类选择器
ul li:first-child {
  background-color: lightseagreen;
}

ul li:last-child {
  background-color: lightcoral;
}

ul li:nth-child(3) {
  background-color: aqua;
}
nth-child 参数详解

nth-child 详解

  • 注意:本质上就是选中第几个子元素

  • n 可以是数字、关键字、公式

  • n 如果是数字,就是选中第几个

  • 常见的关键字有 even 偶数、odd 奇数

  • 常见的公式如下(如果 n 是公式,则从 0 开始计算)

  • 但是第 0 个元素或者超出了元素的个数会被忽略

<style>
  /* 偶数 */
  ul li:nth-child(even) {
    background-color: aquamarine;
  }

  /* 奇数 */
  ul li:nth-child(odd) {
    background-color: blueviolet;
  }

  /*n 是公式,从 0 开始计算 */
  ul li:nth-child(n) {
    background-color: lightcoral;
  }

  /* 偶数 */
  ul li:nth-child(2n) {
    background-color: lightskyblue;
  }

  /* 奇数 */
  ul li:nth-child(2n + 1) {
    background-color: lightsalmon;
  }

  /* 选择第 0 5 10 15, 应该怎么选 */
  ul li:nth-child(5n) {
    background-color: orangered;
  }

  /* n + 5 就是从第5个开始往后选择 */
  ul li:nth-child(n + 5) {
    background-color: peru;
  }

  /* -n + 5 前五个 */
  ul li:nth-child(-n + 5) {
    background-color: tan;
  }
</style>
nth-childnth-of-type 的区别
<style>
  div :nth-child(1) {
    background-color: lightblue;
  }

  div :nth-child(2) {
    background-color: lightpink;
  }

  div span:nth-of-type(2) {
    background-color: lightseagreen;
  }

  div span:nth-of-type(3) {
    background-color: #fff;
  }
</style>
  • nth-child 选择父元素里面的第几个子元素,不管是第几个类型
  • nth-of-type 选择指定类型的元素
伪元素选择器
  • beforeafter 必须有 content 属性
  • before 在内容前面,after 在内容后面
  • beforeafter 创建的是一个元素,但是属于行内元素
  • 创建出来的元素在 Dom 中查找不到,所以称为伪元素
  • 伪元素和标签选择器一样,权重为 1
<style>
    div {
      width: 100px;
      height: 100px;
      border: 1px solid lightcoral;
    }

    div::after,
    div::before {
      width: 20px;
      height: 50px;
      text-align: center;
      display: inline-block;
    }
    div::after {
      content: '德';
      background-color: lightskyblue;
    }

    div::before {
      content: '道';
      background-color: mediumaquamarine;
    }
  </style>

伪元素的案例, 添加字体图标
p {
   width: 220px;
   height: 22px;
   border: 1px solid lightseagreen;
   margin: 60px;
   position: relative;
}
p::after {
  content: '\ea50';
  font-family: 'icomoon';
  position: absolute;
  top: -1px;
  right: 10px;
}
2D 转换之 translate
  • 2D 转换是改变标签在二维平面上的位置和形状
  • 移动: translate
  • 旋转: rotate
  • 缩放: scale

translate 语法

  • x 就是 x 轴上水平移动, y 就是 y 轴上水平移动
transform: translate(x, y)
transform: translateX(n)
transfrom: translateY(n)
  • 2D 的移动主要是指 水平、垂直方向上的移动
  • translate 最大的优点就是不影响其他元素的位置
  • translate 中的100%单位,是相对于本身的宽度和高度来进行计算的
  • 行内标签没有效果
div {
  background-color: lightseagreen;
  width: 200px;
  height: 100px;
  /* 平移 */
  /* 水平垂直移动 100px */
  transform: translate(100px, 100px); 

  /* 水平移动 100px */
transform: translate(100px, 0) 

  /* 垂直移动 100px */
  transform: translate(0, 100px) 

  /* 水平移动 100px */
 transform: translateX(100px); 

  /* 垂直移动 100px */
  transform: translateY(100px)
}
2D 转换 rotate
  1. rotate 旋转

    • 2D 旋转指的是让元素在二维平面内顺时针或者逆时针旋转
  2. rotate 语法
    单位是:deg
    transform: rotate(度数)

  3. 重点知识点

  • rotate 里面跟度数,单位是 deg
  • 角度为正时,顺时针,角度为负时,逆时针
  • 默认旋转的中心点是元素的中心点
img:hover {
  transform: rotate(360deg)
}
动画及旋转综合案例
.box {width: 300px;height: 40px;margin-top: 20px;border: 1px solid #ccc;position: relative;}
.box::after{  //使用after伪元素来做那个三角
    content: "";
    position: absolute;
    right: 10px;
    bottom: 15px;//以上是定位位置
    width: 16px;
    height: 16px;
    border-right: 1px solid red;
    border-bottom: 1px solid red;//做一个正方形,右边和下边给边框
    transform: rotate(45deg);//再旋转45度,就成了向下的箭头
    transition: all 0.5s;//给一个动画,谁用用到谁身上
}
.box:hover::after{
    transform: rotate(225deg);//鼠标移动到box上,after伪类旋转225度
    bottom:5px;
}
二、设置元素旋转中心点(transform-origin)
  1. transform-origin 基础语法
transform-origin: x y;
  1. 重要知识点
  • 注意后面的参数 x 和 y 用空格隔开
  • x y 默认旋转的中心点是元素的中心 (50% 50%),等价于 center center
  • 还可以给 x y 设置像素或者方位名词(topbottomleftrightcenter)
2D 转换之 scale
  1. scale 的作用

    • 用来控制元素的放大与缩小,语法transform: scale(x, y)
    • 注意,x 与 y 之间使用逗号进行分隔
    • transform: scale(1, 1): 宽高都放大一倍,相当于没有放大
    • transform: scale(2, 2): 宽和高都放大了二倍
    • transform: scale(2): 如果只写了一个参数,第二个参数就和第一个参数一致
    • transform:scale(0.5, 0.5): 缩小
    • scale 最大的优势:可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子
       div:hover {
           /* 注意,数字是倍数的含义,所以不需要加单位 */
           transform: scale(2, 2) 
       
           /* 实现等比缩放,同时修改宽与高 */
           transform: scale(2) 
       
           /* 小于 1 就等于缩放*/
           transform: scale(0.5, 0.5)
       }
    
2D 转换综合写法以及顺序问题
  • 同时使用多个转换,其格式为 transform: translate() rotate() scale()
  • 顺序会影响到转换的效果(先旋转会改变坐标轴方向)
  • 但我们同时有位置或者其他属性的时候,要将位移放到最前面
div:hover {
  transform: translate(200px, 0) 
    rotate(360deg) scale(1.2)
}

下面是3D部分,可以暂时不用掌握

一、 认识 3D 转换
  1. 3D 的特点
    • 近大远小
    • 物体和面遮挡不可见
  2. 三维坐标系
    • x 轴:水平向右 -- 注意:x 轴右边是正值,左边是负值

    • y 轴:垂直向下 -- 注意:y 轴下面是正值,上面是负值

    • z 轴:垂直屏幕 -- 注意:往外边的是正值,往里面的是负值

      <img src="images\sanwei.png">

二、3D 转换
  1. 3D 转换知识要点

    • 3D 位移:translate3d(x, y, z)
    • 3D 旋转:rotate3d(x, y, z)
    • 透视:perspctive
    • 3D呈现 transfrom-style
  2. 3D 移动 translate3d

  • 3D 移动就是在 2D 移动的基础上多加了一个可以移动的方向,就是 z 轴方向
  • transform: translateX(100px):仅仅是在 x 轴上移动
  • transform: translateY(100px):仅仅是在 y 轴上移动
  • transform: translateZ(100px):仅仅是在 z 轴上移动
  • transform: translate3d(x, y, z):其中x、y、z 分别指要移动的轴的方向的距离
  • 注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充
  1. 语法
 transform: translate3d(x, y, z)
  1. 代码演示
transform: translate3d(100px, 100px, 100px)
/* 注意:x, y, z 对应的值不能省略,不需要填写用 0 进行填充 */
transform: translate3d(100px, 100px, 0)
三、透视 perspective
  1. 知识点讲解

    • 如果想要网页产生 3D 效果需要透视(理解成 3D 物体投影的 2D 平面上)
    • 实际上模仿人类的视觉位置,可视为安排一直眼睛去看
    • 透视也称为视距,所谓的视距就是人的眼睛到屏幕的距离
    • 距离视觉点越近的在电脑平面成像越大,越远成像越小
    • 透视的单位是像素
  2. 知识要点

    • 透视需要写在被视察元素的父盒子上面
    • 注意下方图片
      • d:就是视距,视距就是指人的眼睛到屏幕的距离

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

  1. 代码演示

    body {
      perspective: 1000px;
    }
    
四、 translateZ
  1. translateZperspecitve 的区别
  • perspecitve 给父级进行设置,translateZ 给 子元素进行设置不同的大小
五、3D 旋转rotateX

3D 旋转指可以让元素在三维平面内沿着 x 轴、y 轴、z 轴 或者自定义轴进行旋转

  1. 语法

    • transform: rotateX(45deg) -- 沿着 x 轴正方向旋转 45 度
    • transform: rotateY(45deg) -- 沿着 y 轴正方向旋转 45 度
    • transform: rotateZ(45deg) -- 沿着 z 轴正方向旋转 45 度
    • transform: rotate3d(x, y, z, 45deg) -- 沿着自定义轴旋转 45 deg 为角度
  2. 代码案例

div {
  perspective: 300px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateX(-45deg)
}
  1. 左手准则

    • 左手的手拇指指向 x 轴的正方向

    • 其余手指的弯曲方向就是该元素沿着 x 轴旋转的方向

六、3D 旋转 rotateY
  1. 代码演示
div {
  perspective: 500px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateY(180deg)
}
  1. 左手准则

    • 左手的拇指指向 y 轴的正方向

    • 其余的手指弯曲方向就是该元素沿着 y 轴旋转的方向(正值)

七、 3D 旋转 rotateZ
  1. 代码演示
div {
  perspective: 500px;
}

img {
  display: block;
  margin: 100px auto;
  transition: all 1s;
}

img:hover {
  transform: rotateZ(180deg)
}
  1. rotate3d
  • transform: rotate3d(x, y, z, deg) -- 沿着自定义轴旋转 deg 为角度
  • x, y, z 表示旋转轴的矢量,是标识你是否希望沿着该轴进行旋转,最后一个标识旋转的角度
    • transform: rotate3d(1, 1, 0, 180deg) -- 沿着对角线旋转 45deg
    • transform: rotate3d(1, 0, 0, 180deg) -- 沿着 x 轴旋转 45deg
  1. 代码演示

    div {
      perspective: 500px;
    }
    
    img {
      display: block;
      margin: 100px auto;
      transition: all 1s;
    }
    
    img:hover {
      transform: rotate3d(1, 1, 0, 180deg)
    }
    
    3D 呈现 transform-style
    1. transform-style
    • 控制子元素是否开启三维立体环境
    • transform-style: flat 代表子元素不开启 3D 立体空间,默认的
    • transform-style: preserve-3d 子元素开启立体空间
    • 代码写给父级,但是影响的是子盒子
meta视口标签的主要目的:

布局视口的宽度应该与理想视口的宽度一致,简单理解就是设备有多宽,我们布局的视口就多宽,我们开发最终会用理想视口,而理想视口就是将布局视口的宽度修改为视觉视口。
box-sizing: border-box;CSS3中的盒子模型:CSS中设置的宽度width 里面包含了 border 和 padding , padding 和 border 不会撑大盒子。

    /*移动端特殊样式*/
//meta 标签
<meta name="viewport" content="width=device-width, user-scalable=no, 
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    //CSS3盒子模型
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    /*点击高亮我们需要清除清除  设置为transparent 完成透明*/
    -webkit-tap-highlight-color: transparent;
    /*在移动端浏览器默认的外观在iOS上加上这个属性才能给按钮和输入框自定义样式*/
    -webkit-appearance: none;
    /*禁用长按页面时的弹出菜单*/
    img,a { -webkit-touch-callout: none; }

流式布局,就是百分比布局,也称非固定像素布局。通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制。

二倍图

我们本身需要一个5050像素(css像素)的图片,但如果就这样直接放到我们的iphone8里面就会被放大2倍,成为100100 就会模糊
我们采取的是直接放一个 100* 100 图片,然后手动的把这个图片设置为 50* 50,这样放到iphone8里面就不会模糊了,
我们准备的图片,比我们实际需要的大2倍,这就方式就是 2倍图

    <!-- 模糊的 -->
    <img src="images/apple50.jpg" alt="">
    <!-- 我们采取2倍图 -->
    <img src="images/apple100.jpg" alt="">
    <!--css部分 -->
    img:nth-child(2) {
            width: 50px;
            height: 50px;
        }
实际做法是准备一张二倍图放进去,然后手动把图片设置缩小一倍,也就是按照测试像素设置即可。
background-size: 背景图片宽度 背景图片高度;
   div {
            width: 50px;
            height: 50px;
            border: 1px solid red;
            background: url(images/apple100.jpg) no-repeat;
            background-size: 50px 50px;
        }
/* 1. 我们有一个 50 * 50的盒子需要一个背景图片,但是根据分析这个图片还是要准备2倍, 100*100 */
 /* 2. 我们需要把这个图片缩放一半,也就是 50*50  background-size*/
Normalize.css:保护了有价值的默认值,修复了浏览器的bug

flex布局

Flex布局原理就是:给父盒子添加flex属性,来控制子盒子的位置排列方式从而实现flex布局。当我们为父盒子设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。Flex布局又叫伸缩布局、弹性布局、伸缩盒布局、弹性盒布局、flex 布局。

flex-direction默认的主轴是row,x轴。
flex-direction:column;将主轴改为y轴,纵轴

justify-content能够设置主轴子元素排列形式,
flex-start默认值,所有子元素在主轴头部显示,左对齐
flex-end所有子元素在主轴尾部显示,右对齐
flex-center所有子元素在主轴居中对齐,居中对齐
space-around所有子元素平分剩余空间,平分对齐,
space-between所有子元素先两边贴边在平分剩余空间,两边贴边中间平分

flex-wrap控制布局是否换行,默认不换换nowrap

align-items设置侧轴子元素排列(单行),如果是多行使用align-content
flex-start 表示从头开始
flex-end 表示从结尾开始
center 表示居中显示
stretch 会将子元素拉伸
Align-content适应于换行多行的情况, 可以设置 上对齐、 下对齐、居中、拉伸以及平均分配剩余空间等属性值
单行用align-items,多行用align-content

flex用来设置分配剩余空间的比列
比如一个父盒子里面三个子盒子,分别左中右,给父盒子开启flex布局,左右的盒子宽度固定,中间的盒子设置flex:1即可占据剩余全部。

align-self控制子项自己在侧轴上的排列方式
align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。
span:nth-child(2) {
      /* 设置自己在侧轴上的排列方式 */
      align-self: flex-end;
}
order 属性定义项目的排列顺序,数值越小,排列越靠前,默认为0。
注意:和 z-index 不一样。
.item2 {
    order: -1;
}

相关文章

  • h5+css黑马笔记

    HTML5 新增标签 新增了那些语义化标签header --- 头部标签nav --- 导航...

  • 文章列表目录

    前端学习 H5+CSS H5+CSS 【1】H5+CSS 【2】H5+CSS 【3】H5+CSS 【4】 Java...

  • Spring--day01

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿感谢传智博客及黑马程序猿 Spring概述 Sprin...

  • Spring--day02

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿感谢传智博客及黑马程序猿 Spring整合web项目 ...

  • Spring--day03

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿感谢传智博客及黑马程序猿 Spring的事务管理 回顾...

  • 成为黑马

    02/100-2021第二篇读书笔记《成为黑马》 ?乾坤未定,你我皆是黑马。 成为黑马,就不能局限于当下的一点一滴...

  • Hibernate--day04

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿记笔记啊记笔记 Inverse属性 Inverse属性...

  • Hibernate--day03

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿记笔记啊记笔记 Hibernate的查询操作 Hibe...

  • Hibernate--day01

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿记笔记啊记笔记 Hibernate的简介 什么是Hib...

  • H5+CSS总结

    H5和CSS知识点总结脑图

网友评论

      本文标题:h5+css黑马笔记

      本文链接:https://www.haomeiwen.com/subject/bguaxhtx.html