首页 > 其他分享 >二、Html5和CSS3

二、Html5和CSS3

时间:2023-02-14 20:45:38浏览次数:44  
标签:CSS3 元素 li ul Html5 对齐 overflow 属性

一、属性选择器: ^='icon'、****$='data'、*='-'

1.1、input标签中有value属性的控件

 input[value]{
      color: pink;
 } 

1.2、input标签中有value属性并且值等于“ddd”的控件

input[value='ddd']{
      color: pink;
}  

1.3div标签中,有class属性,并且class属性值开头以“icon”**的所有控件

 div[class^='icon']{
   
  }

1.4、div标签中,有class属性,并且class属性值结尾是“data”的所有控件

div[class$='data']{ 
  
  } 

1.5、div标签中,有class属性,并且class属性值包含“-”的所有控件

div[class*='-']{
  
 }

二、结构伪类选择器:ul li:first-child

2.1、ul中第一个子元素名字为li的元素

 ul li:first-child {
   
  }

2.2、ul中最后一个子元素名字为li的元素

 ul li:last-child {
   
  }

2.3、ul中指定子元素中第2个名字为li的元素

 ul li:nth-child(2){ 
  }

2.4ul子元素中偶数(even)、奇数(odd)位名字为li的元素

  ul li:nth-child(even){
  }

2.5、所有的子标签循环给样式n0开始

  ul li:nth-child(n){
  }

2.6、所有的子标签循环给样式n0开始,依次是0,3,6,9....

ul li:nth-child(3n){
 }

2.7、所有的子标签循环给样式n0开始,依次是1,4,7,10....

  ul li:nth-child(3n+1){
  }

2.8、所有的子标签循环给样式n0开始,依次是5,6,7,8,9,

 ul li:nth-child(n+5){
  }

2.9、所有的子标签循环给样式n0开始,依次是5,6,7,8,9,

  ul li:nth-child(n+5){
  }

2.10、所有的子标签循环给样式n0开始,依次是5,4,3,2,1

 ul li:nth-child(-n+5){
  }

三、nth-childnth-of-type

  <ul>
      <p></p>
      <li>1</li>
      <li>2</li>
   </ul>

   ul li:nth-child(1){
   }

   ul li:nth-of-type(1){
   }

区别:

nth-child:定位的是:ul子标签中第一个元素为li的元素

因为第一个是p标签,并不是li元素,所以找不到元素,无效

简单说:第一个元素必须是li,如果不是,则无效

nth-of-type:定位的是:ul子标签所有的li标签的第一个元素;

改变颜色的是

  • 1
  • 四、伪元素选择器

    ::before 在元素内部的前面插入内容

    **::after ** 在元素内部的后面插入内容

    伪元素:会创建一个元素,但是属于行内元素,但是在文档中是找不到的

      div::before {
       /* content必须写 */
       content: 'before';
       }
      
    
     div::after {
       /* content必须写 */
       content: 'after';
       }
    

    1、div::before

      / /右侧小尖头
       div::before{
       position: absolute;
       right: 20px;
       top: 10px;
       font-size: 20px;
       content: '图标文字';
       }   
    

    2、清除浮动

    .clearfix:after {
      content: "";
      display: block;
      height: 0;
      clear: both;
      visibility: hidden;
    }
    .clearfix {
     *zoom: 1;
     }
    

    五、默认padingborder宽度会撑开盒子解决方法:

    默认的是:box-sizing: content-box;会撑开盒子变大

    设置为:box-sizing: border-box; 不会撑开盒子

    六、图片变模糊(滤镜)

    filter: 函数名()

    filter: blur(5px);模糊处理,数值越大,越模糊

    七、动态计算盒子宽度

    css3 的 calc()函数。这里的意思是设置宽度比100%的宽度少30px。
    calc()函数用于动态计算长度值。
    calc()函数支持 "+", "-", "*", "/" 运算;
    calc()函数使用标准的数学运算优先级规则;

    1、设置比父盒子减少30px

    • 运算符"+ - * /"左右两边均要留空格 (不留空格会出问题)

    width: calc(100%-30px);

    在less中使用以下样式宽度计算错误:

    width: calc(100% - 30px);
    计算出来是:width: 70%;

    分析 : px也被解析成%进行了运算,这个的原因是calc属性在less下解析时会忽略运算的单位,统一使用第一个数值的单位(注意:很多文章上写的是按照百分比处理,这个说法是不正确的, 例如将100%换为100em,最终的结果是21em)

    解决方法:

    1、width: calc(~"100% - 30px");

    "~"是less语法中的转义字符,允许你使用任意字符串作为属性或变量值。所以不会进行计算,将最终的计算交给了calc

    2、width: e("calc(100% - 30px)");

    "e"是一个方法,也是less中提供的。功能其实也是转义,接收一个字符串,返回一个不经任何处理的字符串,也是将最终的计算交给了calc

    八、过渡、动画

    transition: 要过渡的属性花费时间运动曲线何时开始;

    1、属性:想要变化的css属性,宽度,高度背景颜色,内外边距都可以,如果想要所有的属性都变化过渡,写一个all就可以

    2、花费时间:单位是秒(必须写单位) 0.5s

    3、运动曲线:默认是ease (可以省略)

    4、何时开始:单位是秒(必须写单位)可以设置延迟触发时间默认0s(可以省略)

    一般配合hover使用

    transition: all 1s;

      .box1 {
        width: 200px;
        height: 200px;
        transition: width 1s,height 1s;
       }
       .box1:hover{
        height: 500px;
        width: 500px;
       }
    

    九、转换:移动

    1、移动

    (1)xy轴移动100px,即topleft100px

    transform: translate(100px,100px);

    (2)X轴移动

    transform: translateX(100px);

    (3)Y轴移动

    transform: translateY(100px);

    (4)移动自身宽度的一半

    transform: translateX(50%);

    注意:

    ​ transform**不会影响其他布局,和绝对定位比较像

    transform对于行内元素是无效的

    2、旋转

    (1)顺时针旋转45:正值顺时针,负数逆时针

    transform: rotate(45deg);

    div img {
      transition: all 2s;
      transform-origin: left top;
    }
    div img:hover{
      transform: rotate(360deg);
    } 
    

    (2)设置旋转的中心点:谁做的旋转写到谁的样式里面

    ​ 默认中心点为

    transform-origin: 50%,50%;

    ​ 设置方位(left top bottom right center

    transform-origin: left top;

    3、缩放(里面写数字,不能根单位,是只倍数)

    transform: scale(x,y);

    ​ 也可以设置中心点transform-origin

    ​ 简写:宽高一样:大于1放大,小于1缩放

    transform: scale(x);

    注意:综合写法,如果位置不对,将影响位置

    transform: translate() rotate() scale();

    十、Flex:弹性布局

    注意:父盒子设置为flex时:

    floatclearvertical-align属性将失效

    父元素的属性:

    1flex-direction:属性决定主轴的方向(即项目的排列方向)

    row(默认值):主轴为水平方向,起点在左端。

    row-reverse:主轴为水平方向,起点在右端。

    column:主轴为垂直方向,起点在上沿。

    column-reverse:主轴为垂直方向,起点在下沿。

    2flex-wrap属性

    nowrap(默认):不换行。子元素过多装不开,会出现缩小子元素宽度问题

    wrap:换行,第一行在上方。

    wrap-reverse:换行,第一行在下方。

    3justify-content

    justify-content属性定义了项目在主轴上的对齐方式

    flex-start(默认值):左对齐

    flex-end:右对齐

    center:居中

    space-between:两端对齐贴边,项目之间的间隔都相等。

    space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍

    4align-items属性(适用于交叉轴单行排列)

    flex-start:交叉轴的起点对齐。

    flex-end:交叉轴的终点对齐。

    center:交叉轴的中点对齐。

    baseline: 项目的第一行文字的基线对齐。

    stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

    5align-content属性(适用于交叉轴多行排列)

    flex-start:与交叉轴的起点对齐。

    flex-end:与交叉轴的终点对齐。

    center:与交叉轴的中点对齐。

    space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

    space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

    stretch(默认值):轴线占满整个交叉轴。

    6、子元素的属性:

    1flex:子项目占用的份数

    flex:0;

    2align-self控制子项目自己在侧轴的排列方式

    align-self

    flex-start:交叉轴的起点对齐。

    flex-end:交叉轴的终点对齐。

    center:交叉轴的中点对齐。

    baseline: 项目的第一行文字的基线对齐。

    stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

    3order属性定义子项目的排列顺序(前后顺序)

    order:-1;

    十一、overflow

    overflow常用属性

    1、overflow:auto ;内容会被修剪,超出设置的宽高后会出现滚动条

    2、overflow:scroll;内容会被修剪,不管内容是否超出,都会出现滚动条的位置

    3、overflow:visible;这个是默认值,内容不会被修剪,会出现在元素框外面。

    4、overflow:hidden;内容被修剪,多余的内容被隐藏

    5、overflow:inherit;从父元素那里继承overflow的值。

    overflow

    描述
    visible 默认值。内容不会被修剪,会呈现在元素框之外。
    hidden 内容会被修剪,并且其余内容是不可见的。
    scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
    auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
    inherit 规定应该从父元素继承 overflow 属性的值。

    overflow-x

    描述
    visible 不裁剪内容,可能会显示在内容框之外。
    hidden 裁剪内容 - 不提供滚动机制。
    scroll 裁剪内容 - 提供滚动机制。
    auto 如果溢出框,则应该提供滚动机制。
    no-display 如果内容不适合内容框,则删除整个框。
    no-content 如果内容不适合内容框,则隐藏整个内容。

    overflow-y

    描述
    visible 不裁剪内容,可能会显示在内容框之外。
    hidden 裁剪内容 - 不提供滚动机制。
    scroll 裁剪内容 - 提供滚动机制。
    auto 如果溢出框,则应该提供滚动机制。
    no-display 如果内容不适合内容框,则删除整个框。
    no-content 如果内容不适合内容框,则隐藏整个内容。

    overflow的神奇用法

    • 第一种用法:解决margin-top的传递问题

    margin-top的传递问题:子元素的margin-top会把父元素一起带下来,给父元素加overflow:hidden即可解决

    • 第二种用法:清除浮动带来的影响 --- 父元素高度塌陷

    ​ 万能清除法

    overflow:hidden
    clear:both
    
    • 第三种用法:显隐动画 --- 超出隐藏

    • 第四种用法:单行文本超出省略

    .sl{
      white-space:nowrap;/*不换行*/
      overflow:hidden;/*超出隐藏*/
      text-overflow:ellipsis;/*超出省略*/
      width:100px;/*注意要设置宽度*/
    }
    

    十二、webkit-overflow-scrolling

    -webkit-overflow-scrolling属性是来控制元素在移动设备上是否有回弹的效果。

    它有两个属性值:

    • auto:使用普通滚动,当手指在屏幕上离开时,滚动立即停止
    • touch:使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。

    1、兼容性写法:

    verflow:auto;/* winphone8和android4+ */
    -webkit-overflow-scrolling: touch; /* ios5+ */
    

    bug

    当你给一个元素设置过position:absolute;或者position:relative;后再增加-webkit-overflow-scrolling: touch;属性后,你会发现,滑动几次后可滚动区域会卡主,不能在滑动,这时给元素增加个z-index值就可以了。

    -webkit-overflow-scrolling: touch;
    position:absolute;
    z-index:1;
    

    2、问题

    但是的但是,-webkit-overflow-scrolling:touch这个属性真的是超级神坑,比如:

    • 在safari上,使用了-webkit-overflow-scrolling:touch之后,页面偶尔会卡住不动。(中招)
    • 在safari上,点击其他区域,再在滚动区域滑动,滚动条无法滚动的bug
    • 通过动态添加内容撑开容器,结果根本不能滑动的bug。(中招)
    • 滚动中 scrollTop 属性不会变化
    • 手势可穿过其他元素触发元素滚动
    • 滚动时暂停其他 transition

    解决方案:

    方案一

    <div id="app" style="-webkit-overflow-scrolling: touch;">
        <div style="min-height:101%"></div>
    </div>
    123
    

    方案二

    <div id="app" style="-webkit-overflow-scrolling: touch;">
        <div style="height:calc(100%+1px)"></div>
    </div>
    123
    

    方法就是在webkit-overflow-scrolling:touch属性的下一层子元素上,将height1%1px。从而主动触发scrollbar

    3、思考为什么会出现这个问题

    Safari对于overflow-scrolling用了原生控件来实现。对于有-webkit-overflow-scrolling的网页,会创建一个UIScrollView,提供子layer给渲染模块使用。我们也就只能解决到这了。

    总结

    不得不感叹,这些神奇的黑魔法,看的奇奇怪怪但是真实 的解决了实际的问题,毕竟css本身也是就是黑魔法本黑了,更不要说移动端这个天坑了。

    十三、样式闪烁

    .lampyellow {
      display: block;
      background-color: yellow;
      width: 20px;
      height: 20px;
      border-radius: 50%;
      animation: blink 600ms infinite;    
      -webkit-animation: blink 600ms infinite;
    }
    

    标签:CSS3,元素,li,ul,Html5,对齐,overflow,属性
    From: https://www.cnblogs.com/huihuizhang/p/17120826.html

    相关文章

    • HTML5+CSS3(六)-全面详解(学习总结---从入门到深化)
      目录​​CSS简介​​​​ CSS概念​​​​为什么需要CSS​​​​CSS和HTML之间的关系​​​​ 语法​​​​学习效果反馈​​​​ CSS的引入方式​​​​ 内联样式(行内......
    • HTML5 canvas画一个折线图
      <body><canvasid="drawing"style="border:1pxsolid;"width="600"height="400"></canvas><scripttype="text/javascript">letdrawing=document.query......
    • HTML5 canvas基础使用
      <body> <!-- 1,canvas的宽和高要在标签中写,写在style中将会使画布拉伸到指定宽和高,不是真正的宽高。 --> <canvasid='drawing'width="300"height="700"......
    • css3溢出隐藏的方法
      如果实现单行文本的溢出显示省略号同学们应该都知道用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。实现方法:overflow: hidden;text-overflow......
    • P23:React高级-CSS3实现react显示隐藏
      React16基础​​阐述​​​​新建一个Boss组件​​​​编写业务逻辑​​​​加入CSS动画​​​​Demo​​​​index.js​​​​exp.css​​​​Example.js​​​​Boss.js......
    • css3实现卡片模块带半圆形透明
      在移动端很多卡片都有这种带半圆形透明的设计,如下图比较普遍的做法有使用伪类::after和::before来做半圆,给一个和背景一样的颜色,然后使用绝对定位来实现。这样虽然可以......
    • 大学生学html5课堂笔记
      html 如果时间允许,会涉及到html5Css 如果时间允许,会涉及到css3学习的技术,主要为html4+css2如果你有HBuilder sublim vsCode,可不选择下载HBuilderX前端三剑客:HTML+CS......
    • CSS3控制文字只显示一行超出部分显示省略号
      在编写网页的时候,我们希望文字不换行,特别是在新闻列表的时候,文字多了就添加省略号,不用程序去判断字符,英文和汉字的字符数量是不对应的,一个汉字占两个......
    • CSS3实现打勾(✔)效果
      CSS3实现打勾效果​​HTML主体​​​​我们看,这个效果的HTML结构​​​​属性:​​​​样式属性​​关于打勾✔效果,应该都不陌生。eg:我们在某些商场,支付的时候,支付成功会有......
    • 基于 WebGL 的 HTML5 楼宇自控 3D 可视化监控
      前言智慧楼宇和人们的生活息息相关,楼宇智能化程度的提高,会极大程度的改善人们的生活品质,在当前工业互联网大背景下受到很大关注。目前智慧楼宇可视化监控的主要优点包括:智......