常见问题及常见样式写法

2018-03-06  本文已影响0人  苦瓜_6

常见问题

px, em, rem 的区别

盒模型

W3C 标准中padding、border所占的空间不在width、height范围内;
IE盒模型中width包括“content尺寸+padding+border”。

D889D700-0A44-4602-82E4-53CC5FA36FDE.png

*{ box-sizing: border-box;}

*{ box-sizing: border-box;} 作用是告诉浏览器当前使用的是IE盒模型,设置的边框(border)和内边距(padding)值是包含在width和height内的。

line-height: 2和line-height: 200% 的区别

这两个都表示行高是字体大小的 2 倍, 他们的区别主要体现在子元素继承时, 如下所示:

CSS sprite

原理:把多个小icon合成一个大的图片,使用的时候,元素以这张合成后的大图为背景,通过设置background-position的属性来获取指定icon。

优点:合并原来图片的请求,减少http的性能消耗。
缺点:CSS sprite不能太大,不然下载图片的时间会过长。

应用:

  1. 制作一张网页的图标。
  2. 制作动画。

让一个元素"看不见"有几种方式?有什么区别?

常规
display:none;
visibility:hidden;
opacity:0;

其他(以下消失都是有前提条件的):
height:0;width:0;padding:0;margin:0;border:0; ... etc
position:absolute; left:1000000px; top:100000px; ...etc;
z-index:-1000;...etc
background-color:rgba(0,0,0,0);
总结: 元素"看不见"的方式主要方式让元素用户在当前页面展示的视口里看不见。

区别

CSS 继承

什么是CSS继承

每个 CSS 属性定义的概述都指出了这个属性是默认继承的 ("Inherited: Yes") 还是默认不继承的 ("Inherited: no")。这决定了当你没有为元素的属性指定值时该如何计算值。
当元素的一个继承属性 (inherited property)没有指定值时,则取父元素的同属性的计算值 。只有文档根元素取该属性的概述中给定的初始值。
通俗的讲就是当 Inherited: Yes 时 , 子元素可以继承父元素的属性,即被包在内部的标签可以继承外部标签的样式。


常见样式写法

inline-block 特性及如何去除缝隙

inline-block特性

总结:一个拥有正常盒模型的行内元素,既拥有inline的特点,也有block的特性

去除缝隙

产生缝隙的原因是:回车、换行或者多个空格都会被浏览器当作一个空白字符。因此, 我们只要把空白字符去掉就可以了。

1. 去除HTML中的空格
  <span class="box">
  hello</span><span class="box">
  hello</span>

或者是:

 <span class="box">hello</span
    ><span class="box">hello</span>

又或者是:

  <span class="box">hello</span><!--消除缝隙
  --><span class="box">hello</span>
2. 父元素设置font-size:0。将父容器的font-size 设为0,这样空白字符大小为0 了, 自然就没有缝隙了。
.wrap{
  text-align: center;
  font-size: 0;
}
.box{
  border: 1px solid;
  width: 100px;
  display: inline-block;
  font-size: 16px
}
<span class="box">hello
<span class="box">hello</span>

或者:

<span class="box">hello
<span class="box">hello
3.元素设置浮动

文本溢出

单行文本溢出加 ...

{ white-space: nowrap;  /* 禁止文字自动转行   */
  over-flow: hidden;  /*   溢出后隐藏 */
 text-overflow: ellipsis;  /* 文本溢出之后加 ···*/

多行文本溢出加 ...

  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;  // 这里的 3 是可以根据需要改变的,这里代表只显示3行。超出就会溢出
  overflow: hidden;

用 CSS 实现一个三角形

思路:

CSS代码如下:

.triangle{
  width: 0;
  height: 0;
  border-top: solid 30px transparent;
  border-right: solid 30px blue;
  border-bottom: solid 30px transparent;
  border-left: solid 30px transparent;  
}

或者这样写:

.triangle {
  border-color: transparent blue transparent  transparent;
  border-style: solid;
  border-width: 30px 30px 30px 0;
  height: 0px;
  width: 0px;
}

效果如下:

970FF355-062B-4D5F-8897-77F8C74C1E1B.png

变换字母大小写 : text-transform && font-variant

text-transform: uppercase
text-transform: lowercase
text-transform: capitalize
font-variant: small-caps 
/* font Variant用于将字体变成小型的大写字母(即与小写字母等高的大写字母 */
image.png

禁止自动换行

 white-space: nowrap; 

用图片替换文字

有时我们需要在标题栏中使用图片,但是又必须保证搜索引擎能够读到标题,CSS语句可以这样写:

 h1 { 
    text-indent:-9999px; 
    background:url("h1-image.jpg") no-repeat; 
    width:200px; 
    height:50px; 
  }

CSS提示框

当鼠标移动到链接上方,会自动出现一个提示框

<a class="tooltip" href="#">
    链接文字 
   <span>提示文字</span>
</a>
a.tooltip {
  position: relative
}
a.tooltip span {
  display: none;
  padding: 5px;
  width: 200px;
}
a:hover {
  background: #fff;
}
a.tooltip:hover span {
  display: inline;
  position: absolute;
}

参考

上一篇下一篇

猜你喜欢

热点阅读