HTML & CSS - 进阶

注意:以下前缀兼容性写法注释
-o-:Opera
-ms://IE10
-moz://火狐
-webkit://Safari 4-5, Chrome 1-9
行内元素有: head meta title lable span br a style em b i strong
块级元素有: body from select textarea h1-h6 html table button hr p ol ul dl cnter div
行内块元素常见的有: img input td

给图片设置
img {
max-width: 100%;
max-height: 100%;
} 可以让图片的大小自适应本身

clear: both 清除浮动
box-sizing: border-box; 元素将会有边框
user-select: none; ==> 禁止选中文本
-webkit-transform: translateZ(0); ==> 开启硬件加速
-webkit-backface-visibility: hidden; ==> 去除动画加载闪烁
outline: none; ==> 可以去除浏览器的框
设置绝对定位的时候,可以把left和right设置为0;这样就可以使用margin: auto;来居中

div * {pointer-events: none;} ==> 禁止点击事件/鼠标事件“穿透”, 都将不能使用
.main{-webkit-overflow-scrolling: touch;} ==> 移动端滚动顺滑
zoom: 2; ==> 可以放大和缩小元素
==> 进度条

在javascript中,可以通过window.devicePixelRatio获取到当前设备的dpr。
物理像素 css像素
设备独立像素 计算机中的点
设备像素比 = 物理像素 / 设备独立像素;
位图像素 一个位图像素是栅格图像(如:png, jpg, gif等)最小的数据单元。每一个位图像素都包含着一些自身的显示信息(如:显示位置,颜色值,透明度等)。


浏览器的本地存储功能:

localStorage: 一直存在
sessionStorage: 本页面不销毁的话一直存在


小技巧




    
    
    
    Document
      
     




 禁止缩放

















元素水平排列方法
 //==>  float: left;
 //==>  display: flex;
 //==>  display: inline;
 //==>  position: relative;


- 图片代替文字
使用图片代替文字的做法:  使用a标签,背景图片使用css添加
 ·1 图片和文字都要有,然后图片代替文字之后隐藏文字  设置文字的首行缩进为盒子宽度,到外面,然后隐藏
 ·2 设置容器的高度为0 然后设置内部上边距为图片的高度


 单行文本溢出问题
    white-space:nowrap;  文本禁止换行
    Overflow:hidden;  超出范围剪切
    Text-overflow:ellipsis
多行文本溢出问题
.box{
    width: 100%;
    overflow: hidden;
    display: -webkit-box;   //将对象作为弹性伸缩盒子模型显示  *必须结合的属性*
    -webkit-box-orient: vertical;   //设置伸缩盒对象的子元素的排列方式  *必须结合的属性*
    -webkit-line-clamp: 3;   //用来限制在一个块元素中显示的文本的行数
    word-break: break-all;   //让浏览器实现在任意位置的换行 *break-all为允许在单词内换行*
}


移除浏览器默认的样式 : 
input, button, textarea, select {
        *font-size: 100%;
        -webkit-appearance:none;
}


边距塌陷:
 //==> 给父盒子添加border border: 1px solid transparent;
 //==> 父盒子添加  overflow: hidden;
 //==> 设置padding值
 //==> 添加 position: flxed;
 //==> 添加 display: table;
 //==> 在子元素前面添加空元素  .son::before { content:""; overflow:hidden; }
 

手写表格中的内容随着表格的宽度变细自动换行增加行高: 使用display: table; display : table-cell;

 控制图片缩放比例的方法: 使用padding-top百分比:
 .容器 {
    padding: 15.15% 0 0;
    position: relative;
}
.容器 > img {
    position: absolute;
    width: 100%; height: 100%;
    left: 0; top: 0;
}


// 设置一个盒子等比例缩放的方法
内下边距如果是宽度的二倍,高就是宽度的二倍
{
    width 50%;
    height: 0;
    padding-bottom: 50%;


一个盒子上下左右居中:
  已知宽度: ==>>
   .box {
            width: 100px;
            height: 100px;
            background-color: #eee;
            position: absolute;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            margin: auto;
        }
   .box {
            width: 100px;
            height: 100px;
            background-color: #eee;
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -50px;
            margin-left: -50px;
        }
  未知宽度: ==>>
   .box {
            background-color: #eee;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
        }
   
  -- 使用弹性布局
        

   文字竖着排列
      p {
            height: 210px;
            line-height: 30px;
            text-align: justify;
            writing-mode: vertical-lr;  左-右
            writing-mode: tb-lr;   IE 左-右
            writing-mode: vertical-rl;  右-左
            writing-mode: tb-rl;  IE 右-左
        }

  点击打开QQ进行聊天



80080088

div{
    //把div元素中的文本划分为4列
           -moz-columns: 4;
        -webkit-columns: 4;
                columns: 4;
    //将div元素中的文本分为三列,并列间30px的间隔
        -moz-column-gap: 30px;
     -webkit-column-gap: 30px;
             column-gap: 30px;
    //规定列之间的宽度、样式和颜色
       -moz-column-rule: 1px outset #fff;
    -webkit-column-rule: 1px outset #fff;
            column-rule: 1px outset #fff;
}

    实现页面中左边盒子宽度固定, 右边盒子宽度撑开, 全部高度自适应
    
    一个盒子设置 display: table;
    剩下的两个盒子: display: table-cell;
    固定宽的盒子设置宽度就可以
    
    实现页面中左边盒子宽度固定,高度随内容变化, 右边盒子自适应
     左边盒子设置宽度和向左浮动,右边盒子margin-left: 左边盒子宽度

    让一个盒子上下撑满的方法:  设置一个盒子绝对定位,然后上下左右填写距离就会自动撑开
    -   position: absolute;
       top : 0;
       bottom : 0;
       
   -    .box {
            position: absolute;
            height: 100%;
            width: 100%;
         }
   -    设置html 和 body: height: 100%;

    高级滚动视觉差效果:
     
最前方主体内容
后排滚动
首先给最大的滚动添加: perspective: 1px; overflow: scroll; 真正要滚动的部分添加: transform-style: preserve-3d; position: relative; 主体滚动添加: position: absolute; left: 50%; transform: translate3D(-50%, -120px, -1px) scale(2); 其他辅助内容自行添加

    创建一个打点动画: 
    .loading::after {
            display: inline-table;
            content: "...";
            animation: spin4 2s infinite step-start;
            }
            
        @keyframes spin4 {
            33% {
                content: '.';
            }

            66% {
                content: '..';
            }
        }

    创建一个背景滚动变换
    .box {
            width: 100%;
            height: 200px;
            background: linear-gradient(to right, red, orange, yellow, green, cyan, blue, purple);
            animation: hue 6s linear infinite;
        }

        @keyframes hue {
            from {
                filter: hue-rotate(0deg);
            }

            to {
                filter: hue-rotate(360deg);
            }
        }
        
  文字背景颜色渐变
    .box {
            width: 100px;
            height: 100px;
            background: linear-gradient(to right, red, blue, yellow);
            -webkit-background-clip: text;
            color: transparent;
        }

好玩儿的:
    控制台返回一个键盘图形:// 用字符串返回一个键盘图形
(_=>[..."`1234567890-=~~QWERTYUIOP[]\\~ASDFGHJKL;'~~ZXCVBNM,./~"].map(x=>(o+=`/${b='_'.repeat(w=x

画布

···创建一个画布Canvas···
http://www.runoob.com/tags/ref-canvas.html

            一个简单的画布,需要用这个框架,具体的实现必须使用脚本编写  js

var c=document.getElementById("myCanvas");------找到canvas元素
var ctx=c.getContext("2d"); -------创建对象
ctx.fillStyle="#FF0000";-----设置fillStyle属性可以是CSS颜色,渐变,或图案。fillStyle 默认设置是#000000(黑色)。
ctx.fillRect(0,0,150,75);-----fillRect(x,y,width,height) 方法定义了矩形当前的填充方式。
ctx.shadowBlur=20; 值的大小代表阴影大小
ctx.shadowColor="black”; 创建阴影-颜色
ctx.shadowOffsetX=20; 水平方向的距离
ctx.shadowOffsetY=20; 垂直方向的距离
ctx.fillStyle="red";
ctx.fillRect(20,20,100,80);创建最基本的样式 起始坐标和长宽
ctx.strokeStyle="#FF0000”; 创建轮廓颜色

ctx.strokeRect(20,20,150,100); 创建一个框框

=================================================================================
Canvas 线条
在Canvas上画线,我们将使用以下两种方法:
moveTo(x,y) 定义线条开始坐标
lineTo(x,y) 定义线条结束坐标
绘制线条我们必须使用到 "ink" 的方法,就像stroke().
创建一个线条:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();-----开始
ctx.lineWidth=5;——线条的宽度
ctx.lineCap="butt”;——线条的样式
ctx.lineCap="round”; 圆帽子
ctx.lineCap="square”; 直线
ctx.moveTo(20,20);———线条开始的坐标
ctx.lineTo(200,20);———线条结束的坐标
ctx.stroke();-----结束
线条的转弯:
ctx.beginPath();
ctx.lineWidth=10;
ctx.lineJoin="bevel”; ---斜角
ctx.lineJoin="round”;——圆角
ctx.lineJoin="miter”;——尖角
ctx.moveTo(20,20);
ctx.lineTo(100,50);
ctx.lineTo(20,100);
ctx.lineTo(120,120); ------可以创建坐标然后会自动相连

ctx.stroke();

=================================================================================
Canvas 矩形:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rect(20,20,190,110);
ctx.stroke();

ctx.clearRect(20,20,100,50);-----指定一段距离内没有样式

=================================================================================
Canvas 圆形
在canvas中绘制圆形, 我们将使用以下方法:
arc ( x , y , r , start , stop)
实际上我们在绘制圆形时使用了 "ink" 的方法, 比如 stroke() 或者 fill().
var c=document.getElementById("myCanvas"); ---找到元素
var ctx=c.getContext("2d"); ---创建对象
ctx.beginPath(); ---开始
ctx.arc(95,50,40,0,2Math.PI,true); -----X Y 半径 控制圆的显示部分 1或者21的时候是显示半边 true逆时针
ctx.stroke(); ----开始
创建圆圈的时候,开始位置为0的时候,是在最右边的点上,结束的位置为Math.PI ( 代表180度),最后的一个值
默认的属性是顺时针方向,为true的时候是逆时针方向。角度都是按照顺时针的方向来计算的。
Math.PI 180度
2
Math.PI 360度
0.5*Math.PI 90度

1.5*Math.PI 270度

=================================================================================
Canvas 文本
使用 canvas 绘制文本,重要的属性和方法如下:
font - 定义字体
fillText(text,x,y) - 在 canvas 上绘制实心的文本
strokeText(text,x,y) - 在 canvas 上绘制空心的文本
使用 fillText():--------------------------实心文本
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial"; ---字体和样式
ctx.fillText("Hello World",10,50); -----文本 距离左边的距离 距离上边的距离
使用 strokeText():--------------------------空心文本
JavaScript:
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.font="30px Arial"; ----字体和样式

ctx.strokeText("Hello World",10,50); ----文本 距离左边的距离 距离上边的距离

=================================================================================
Canvas 渐变
以下有两种不同的方式来设置Canvas渐变:
createLinearGradient(x,y,x1,y1) - 创建线条渐变
createRadialGradient(x,y,r,x1,y1,r1) - 创建一个径向/圆渐变
当我们使用渐变对象,必须使用两种或两种以上的停止颜色。

addColorStop()方法指定颜色停止,参数使用坐标来描述,可以是0至1.


使用 createLinearGradient(): ------------------线性渐变
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createLinearGradient(0,0,200,0); 括号里面的是起始坐标和结束坐标
grd.addColorStop(0,"red");——开始颜色
grd.addColorStop(0,"red”);
grd.addColorStop(1,"white"); ——结束颜色 多个这个的时候可以添加多个渐变颜色
// 填充渐变
ctx.fillStyle=grd; -----运用样式 grd

ctx.fillRect(10,10,150,80);


使用 createRadialGradient():-----------------------圆形渐变
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
// 创建渐变
var grd=ctx.createRadialGradient(75,50,5,90,60,100);
grd.addColorStop(0,"red");
grd.addColorStop(1,"white");
// 填充渐变
ctx.fillStyle=grd;
x.fillRect(10,10,150,80);

你可能感兴趣的:(HTML & CSS - 进阶)