css

  • Post author:
  • Post category:其他


!css 常见

css书写顺序,
优先级第一定位属性:position display float left top right bottom overflow clear z-index
优先级第二自身属性:width height padding border margin background
优先级第三文字样式:font-family font-size font-style font-weight font-varient color
优先级第四文本属性:text-align vertical-align text-wrap text-transform text-indent text-decoration letter-spacing word-spacing white-space text-overflow line-height
优先级第五css3中新增属性:content box-shadow border-radius transform……
作用:
减少浏览器reflow(回流),提升浏览器渲染dom的性能。
	解析html构建dom树,解析css构建css树:将html解析成树形的数据结构,将css解析成树形的数据结构
	构建render树:DOM树和CSS树合并之后形成的render树。
	布局render树:有了render树,浏览器已经知道那些网页中有哪些节点,各个节点的css定义和以及它们的从属关系,从而计算出每个节点在屏幕中的位置。
	绘制render树:按照计算出来的规则,通过显卡把内容画在屏幕上。

css常见由继承的属性:
  1、字体系列属性
        font:组合字体
        font-family:规定元素的字体系列
        font-weight:设置字体的粗细
        font-size:设置字体的尺寸
        font-style:定义字体的风格
        font-variant:设置小型大写字母的字体显示文本,这意味着所有的小写字母均会被转换为 大写,但是所有使用小型大写字体的字母与其余文本相比,其字体尺寸更小。
        font-size-adjust:为某个元素规定一个 aspect 值,字体的小写字母 "x" 的高度与

	2、文本系列属性
        text-indent:文本缩进
        text-align:文本水平对齐
        line-height:行高
        word-spacing:增加或减少单词间的空白(即字间隔)
        letter-spacing:增加或减少字符间的空白(字符间距)
        text-transform:控制文本大小写
        color:文本颜色
	3、元素可见性:visibility

css常见不能被继承的属性:
	    1、display
        2、盒子模型的属性:宽度、高度、内外边距、边框等
        3、背景属性:背景图片、颜色、位置等
        4、定位属性:浮动、清除浮动、定位position等
        5、生成内容属性:content、counter-reset、counter-increment
        6、轮廓样式属性:outline-style、outline-width、outline-color、outline

常见属性

//使用定位的形式,让其固定在某个地方    定义侧边栏、广告
<aside class="left"> 
 p 标签的 align属性 "left"   让p标签的每行元素都左对齐    
  
word-break: break-all;   //单词自动换行   可拆分
word-break:keep-all;  //单词不换行
word-wrap: break-word;    //单词不被拆分    //一起使用互补
letter-spacing//字母(文字)间的间距 
word-spacing;//空格(字)间距

resize: none(不可调)|both |horizontal (可调宽度)|vertical (可调高度);  //规定textarea用户可以调整尺寸    
 
position:sticky;//粘性定位
//注意事项
//1.须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效
//2.设定为 position:sticky 元素的任意父节点的 overflow 属性必须是 visible,否则 position:sticky 不会生效
//定义 自定义变量
:root{
	--hee:50px
}
//使用自定义变量
.bgH{
	height:var(--hee)
	width:calc(var(--hee + 50px))  //运算符最好加空格 不然可能不起作用
}

文本超出显示…

//超出...   一行
text-overflow:ellipsis   //文本超出部分用...代替   
overflow:hidden;//前提是(超出部分隐藏)
 white-space:nowrap;// (单词遇见空格不换行:不会换行)//空白不换行  只有br才能换行   (一段文字不会换行)  
//多行行显示 超出部分...   在 -webkit-box,和移动端可以
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;  
/*  -webkit-line-clamp用来限制在一个块元素显示的文本的行数。 为了实现该效果,它需要组合其他的WebKit属性。常见结合属性:
display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 。
-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 。*/
//兼容ie  的多行显示
p{
	position: relative; 
	line-height: 20px;
	max-height: 40px; //高度为行高的几倍就显示几行
	overflow: hidden;
}
p::after{  //兼容ie8需要将::after替换成:after
content: "..."; 
position: absolute;
 bottom: 0; 
 right: 0; 
 padding-left: 40px;
background: -webkit-linear-gradient(left, transparent, #fff 55%);
background: -o-linear-gradient(right, transparent, #fff 55%);
background: -moz-linear-gradient(right, transparent, #fff 55%);
background: linear-gradient(to right, transparent, #fff 55%);
}
/*
此方法有个弊端 那就是 【未超出行的情况下也会出现省略号】 ,这样会不会很挫!!! 没办法,只能结合JS 进行优化该方法了。
 //当内容超出4行是进行截取直到内容控制在4行内				
 if($('.text').height()>80){  
        while ($('.text').height()>80){//如果还是高于指定行数 就在此裁剪 内容 直至到行数
         var content = $('.text').html().substr(0,$('.text').html().length-14);//裁剪数具体看情况而定
            $('.text').html(content);
        }
        $('.text').append('<a href="http://www.baidu.com" style="margin-left:10px">     ...查看详情</a>');
    }
    //再次判断截取后的内容加上'...查看详情'后的最终内容是否超出4行,超出就再次截取   这次至获取文本的长度text()
    if($('.text').height()>80){
        content = $('.text').text().substr(0,$('.text').text().length-20);
        $('.text').html(content);
        $('.text').append('<a href="http://www.baidu.com">...查看详情</a>')
    }
*/

input 的placeholder 的样式设置 和 图文复制

input::-webkit-input-placeholder {
   /* placeholder颜色  */
   color: #aab2bd;
   /* placeholder字体大小  */
   font-size: 12px;
   /* placeholder位置  */
   text-align: right;
}
input::-moz-placeholder { 
    /* Mozilla Firefox 19+ */ 
    font-size:14px;
    color: #333;
} 
input:-ms-input-placeholder { 
    /* Internet Explorer 10+ */ 
    font-size:14px;
    color: #333;
}


//图文不能复制
-webkit-user-select: none; 
-ms-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;

box-shadow

    box-shadow:第三个参数  模糊距离:值越大越模糊   第四个参数 模糊大小:值越大模糊宽度越大
    box-shadow:-10px 0 10px red, /*左边阴影*/
	10px 0 10px yellow, /*右边阴影*/
	0 -10px 10px blue, /*顶部阴影*/
	0 10px 10px green; /*底边阴影*/

table 布局

table 布局:做table页面时,有时对td设置的宽度是无效的,td的宽度始终有内部的内容撑开,可以设置padding,但直接设置width却无效
	1	我们可以在td中加个div,然后给div设置宽度,来试一下:
		<td width="100px" style="width: 100px !important;">1000800</td>
		修改为
		<td><div>1000800</div></td>
		然后在样式里写入:
		td div {
		width:100px;
	2 table-layout:fixed;列宽由表格宽度和列宽度设定。

flex

display:flex   //项目为块级元素    //兼容IE 11 
display: -webkit-flex;  /** 如果想想兼容ie10   就要加这个前缀
//如果想要兼容ie10以下的版本  可以用flot 布局 及定位来实现 
**/***/容器属性**
flex-direction:row |row-reverse| column|column-reverse:
flex-wrap:nowrap | wrap | wrap-reverse
flex-flow:以上俩简写

justify-content:flex-start | flex-end | center | space-between | space-around;定义了项目在主轴上的对齐方式。

align-items: flex-start | flex-end | center | baseline | stretch;属性定义项目在交叉轴上如何对齐。

(工作中一班为一根轴线) align-content:flex-start | flex-end | center | space-between | space-around | stretch; 定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用
			  
 **/****/项目属性**
order:定义项目的排列顺序。数值越小,排列越靠前,默认为0。

flex-grow:定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

flex-shrink:定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小

flex-basis:定义了在分配多余空间之前 项目将占据固定空间
 **/****/( 对某个特定的项目进行排版) **/****/
▲▲▲align-self:属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性

▲▲▲flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto     flex-direction(row | row-reverse | column | column-reverse)  


flex详细教程

   /*水平垂直居中方式*/                                                              
行内元素居中   父级块级元素设置: text-align:cneter  line-height
块级元素居中  
//在平时,我们经常会碰到让一个div框针对某个模块上下左右都居中(水平垂直居中),其实针对这种情况,我们有多种方法实现。
方法一: 绝对定位方法:`不确定当前div的宽度和高度`,采用 transform: translate(-50%,-50%); 当前div的父级添加相对定位(position: relative;)
div{
    background:red;
    position: absolute;
    left:50%;
    top:50%;  /*让当前元素的左上角在父级的中心*/
    transform: translate(-50%, -50%);/*让当前元素的中心在父级元素的中心*/
}
方法二: 绝对定位方法:`确定了当前div的宽度`,margin值为当前div宽度一半的负值
div{
    width:600px;
    height: 600px;
    background:red;
    position: absolute;
    left:50%;
    top:50%;
    margin-left:-300px;
    margin-top:-300px;
}
方法三:绝对定位方法:绝对定位下top left right bottom 都设置0
<div class="child">我是子级</div>
div.child{
    width: 600px;
    height: 600px;
    background: red;
    position:absolute;
    left:0;
    top: 0;
    bottom: 0;
    right: 0;
    margin: auto;
}
方法四:flex布局方法(推荐)`不确定和不确定当前div的宽度和高度`当前div的`父级`添加flex css样式
<div class="box">
    <div class="child">child</div>
</div>
.box{
    height:800px;
    -webkit-display:flex;
    display:flex;
    -webkit-align-items:center;
    align-items:center;
    -webkit-justify-content:center;
    justify-content:center;
    border:1px solid #ccc;
}
div.child{
    width:600px;
    height:600px;
    background-color:red;
}
方法五:table-cell实现水平垂直居中: table-cell middle center组合使用
.table-cell {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
    width: 240px;
    height: 180px;
    border:1px solid #666;
}
 

 解决外边距合并

父级元素设置
overflow: hidden;
padding-top: 1px;
&::before{
	display: table;
	content: "";
}	
border-top:1px soild transparent

产生浮动原因:盒子里使用了浮动和结对定位等让元素脱离文档流
//解决高度坍塌 清除浮动   
也是在父级元素
&:after{
	dsiplay:block;
	content:"";
	clear:both;
	height:0,
}	



版权声明:本文为axzzy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。