程序员我爱编程

CSS 属性区别及常见问题

2017-12-24  本文已影响0人  Yoyo_UoU
块级元素,行内元素区别
块级元素 行内元素
div span
h1~h6 a
p img
dl b,i
dd button
dt em
fieldset label,select
form input,textarea
hr br
blockquote q
ul small
table th,td
li sub,sup

区别:

CSS 继承

css的继承是指子元素拥有祖先元素的样式

可继承属性 不可继承属性
color border
opacity padding
font margin
text-align display
line-height background
cursor text-decoration

表单元素不会继承字体属性,需要单独设置

使元素水平居中

块级元素 margin:auto
内联元素 text-align:center

px, em, rem 有什么区别
IE盒模型和W3C盒模型有什么区别

在IE6之前的浏览器版本才会出现IE盒模型问题


区别在于width的计算,W3C盒模型不包含内边距和边框的宽,IE盒模型则是包含内边距和边框的宽。
这让我想到一个属性box-sizing: border-box;使用它给元素设置width,就类似IE盒模型,固定宽,设置的边框宽度和内边距宽度都会包含在width里面,当然 如果设置的边框宽度和内边距宽度超出本身宽度范围,会溢出

line-height: 2和line-height: 200%有什么区别

这个问题就和 line-height:numberline-height:% 有什么区别一样。

number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距。
% || em:基于当前字体尺寸的百分比行间距。
length:带有单位如px,设置固定的行间距。
normal:行高由浏览器默认设置。

overflow、display、visibility的区别

他们都能让元素隐藏。

visibility特别之处是就算父元素隐藏了,但子元素设置 visibility:visible;还可以显示。

使用inline-block 左右会有间距 也会导致高度不一

inline-block:行内块元素,拥有内联和块级的优点,可以并排显示也可设置margin、wiidth、height。

1.在编译器里面不换行,去掉多余空格

<div class="box">
    <a href="#">
    学习</a><a href="#">
    css</a><a href="#">
    属性</a>
</div>

2.借助HTML注释

<div class="box">
    <a href="#">学习</a><!--
 --><a href="#">css</a><!--
 --><a href="#">属性</a>
</div>

3.不要闭合标签,除了最后一个

<div class="box">
    <a href="#">学习
    <a href="#">css
    <a href="#">属性</a>
</div>

不符合代码规范
4.margin负值

.box a{
    display: inline-block;
    margin-right: -5px;
}

你真的愿意计算?
5.display:flex

.box {
    display: -webkit-flex;
    display: flex;
}

弹性盒子布局,如果兼容老手机,请在父元素里添加display:-webkit-box;

6.设置父元素字体为0

.box {
    font-size: 0;
    -webkit-text-size-adjust:none;  //考虑兼容i7
}
.box a {
    font-size: 12px;
}

感觉最好用的就是6了

.box a{
    vertical-align:top;    
}
img{
   vertical-align: middle;
}
   
font属性
body{
  font: 12px/1.5 tahoma,arial,'Hiragino Sans GB','\5b8b\4f53',sans-serif;
}

字体名称有连字符“-”或" "空格,或字符时应该加引号,防止有些浏览器解析的时候不认识。
'\5b8b\4f53' 指的是字体,这么写是因为有些编码和浏览器的编码不匹配,如果直接写汉字会乱码,导致字体设置失效的问题,把字符串转义,就不会出现这个问题。

p{
    font-size:14px;
    height:16px;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
}
p{
    -webkit-text-stroke:1px #f00;
}

IE和火狐不支持,基于webkit内核,都得加前缀

element::-webkit-input-placeholder,
element:-ms-input-placeholder,
element::-moz-placeholder{ 
    corlor: pink;
}
appearance: none;
-moz-appearance:none;
-webkit-appearance:none;
::selection {
        background:pink; 
        color:#fff;
    }

    ::-moz-selection {
        background:pink; 
        color:#fff;
    }

    ::-webkit-selection {
        background:pink; 
        color:#fff;
    }

div {
       line-height: 1.5;
       width: 260px;
       color: pink;
       background-color: rgba(0, 0, 0, .1);
    }

解决方法:

ele::before,
ele::after {
    content : "";
    display: block;
    height: 0;
    clear: both;
}
ele{
  zoom:1;
}

不止这一种清除浮动的方法 根据你自己喜欢去用其他的

用 CSS 实现一个三角形
css.png
简单实现风车
       .box {
            position: relative;
            width: 80px;
            height: 75px;
            z-index: 10;
            animation: around 1s linear infinite
        }
        @keyframes  around{
            0%{transform: rotate(0deg);}
            100%{transform: rotate(360deg);}
        }
        .winnower {
            position: absolute;
            width: 0;
            height: 0;
            border: 20px solid transparent;
            border-top-width: 12px;
            border-top-color: lightskyblue;
            top: 50px;
        }

        .winnower:nth-of-type(1) {
            top: 0;
            left: 5px;
            transform: rotate(90deg);
        }

        .winnower:nth-of-type(2) {
            top: 35px;
            left: 0;
        }

        .winnower:nth-of-type(3) {
            top: 5px;
            left: 40px;
            transform: rotate(180deg);

        }

        .winnower:nth-of-type(4) {
            left: 35px;
            top: 40px;
            transform: rotate(270deg);
        }

        .stick {
            position: absolute;
            background-color: pink;
            width: 6px;
            top: 45px;
            left: 45px;
            height: 70px;
            border-radius: 50px;
        }
效果图
CSS sprite

CSS Sprites(雪碧图)是一种网页图片应用处理方式,就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background- repeat”,“background-position”的组合进行背景定位。



优点

缺点

在线生成工具https://www.toptal.com/developers/css/sprite-generator

上一篇 下一篇

猜你喜欢

热点阅读