CSS常见样式(二)

1. text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中

(1)作用:CSS属性定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。
(2)作用元素:块元素
(3)可以让块元素的内容相对其父元素水平居中。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
    .div,
    h1{
        text-align:center;
        border:1px solid red;
  }
</style>
</head>
<body>
<div class="div">hello</div>
<h1>hello</h1>
</body>
</html>

效果:


text-align:center

2. IE 盒模型和W3C盒模型有什么区别?

主要区别在宽度的计算方式上:

  • IE盒模型:

    width = content + border + padding

    优点:宽度固定。设置宽度以后会,盒模型整体宽度不需要单独考虑padding和border对整体的影响。

    因为IE盒模型的宽度包括了content、padding、border,所以我们在布局样式的时候不需要单独去计算每个部分的宽度,只需要考虑每个每个元素之间的margin即可,但是也有个问题需要注意,因为宽度包含了边距和边框,对应的 content 可以利用的空间相对较少。

    缺点:content 可利用空间受限制。

    因为 padding和border占据了一定的空间,那么在宽度固定的情况下,content 和padding 及border的宽度相互制约。

    image
  • 标准盒模型(W3C盒模型):

    width = content

    优点:content 不受padding和border限制。
    缺点:盒子整体宽度受限制。在进行整体布局的时候,因为考虑到border和padding的宽度,盒子的整体宽度需要单独计算,比较繁琐。


    image
  • 如何使用?

    在上述两种盒模型中,没有哪个绝对的好与坏。实际开发中,面对不同的情况,所选择的盒子模型也不同,所以,按需求出发,哪种情况下哪种盒模型更好用就用哪一个,以下为两种盒模型的转换方法:

    box-sizing: content-box ; // 设置盒模型为标准盒模型

    box-sizing: border-box; //设置和模型为IE盒模型

3. *{ box-sizing: border-box;}的作用是什么?

作用:

设置所有的块元素的和模型结构为 IE盒模型,即 width = content + padding + border ;好处在于盒模型整体结构不会受到padding和border的影响。

4. line-height: 2line-height: 200%有什么区别?

line-height 后有三种参数可写,分别为 数字(代表倍数),百分比(默认行高的百分之几),带单位的像素值。已知Chrome的默认字体大小为16px。

  • line-height:2
    (1)设置字体的行高是默认/本身 字体的行高的2倍

    当没有单独设置字体大小的情况下,此时行高就按照默认字体16px的2倍来计算来计算;

    当已经设置了字体大小 a px,此时行高的大小为 2a px;

    下图中 line-height: 2 == line-height: 32px

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>JS Bin</title>
      <style>
        .div{
          border:1px solid black;
          width: 200px;
          line-height:2;
          /* line-height: 32px; */
        }
      </style>
    </head>
    <body>
    <div class="div">
      这是一段文字,这是一段文字
       这是一段文字,这是一段文字
       这是一段文字,这是一段文字
       这是一段文字,这是一段文字
      <p></p>
    </div>
    </body>
    </html>
    
    image

    (2)继承属性
    当父元素设置 了 line-height 以后,后面的元素会继承前面的属性,如下图:

    body 设置 line-height: 2 后面的子元素没有设置但是依然可以继承父元素的属性。

    //css样式如下
    body{
      line-height: 2;
    }
    .div{
      border:1px solid black;
      width: 200px ;
    }
    
    
    image

    但是:

    当子元素设置了字体大小,那么父元素又设置了 font-height:2 此时子元素的行高大小为当前值的2倍。
    论证了前面的观点 (1)设置字体的行高是默认/本身 字体的行高的2倍 ,代码如下:

    body{
      line-height: 2;
    }
    
    .div{
      border:1px solid black;
      width: 200px;
      font-size: 20px;
    }
    
    image

  • line-height:200%
    (1)设置字体的行高是 默认/当前 字体的行高的2倍,即Chrome的默认字体大小为16px,那么此时行高的大小 == 32px

    等价于 line-height:200%; == line-height: 32px;

    .div{
      border:1px solid black;
      width: 200px;
    /* font-size:16px; */
      line-height: 200%;
    }
    

    (2)继承属性,和上面同理

  • line-height:32px
    设置字体的行高为32px,

    .div{
      border:1px solid black;
      width: 200px;
      line-height: 50px;
    }
    
    image

    (2)继承属性,和上面同理

5. inline-block有什么特性?如何去除缝隙?高度不一样的inline-block元素如何顶端对齐?

  • inline-block 的元素(如input、img)既具有 block 元素可以设置宽高的特性,同时又具有 inline 元素默认不换行的特性。当然不仅仅是这些特性,比如 inline-block 元素也可以设置 vertical-align(因为这个垂直对齐属性只对设置了inline-block的元素有效) 属性。
  • HTML 中的换行符、空格符、制表符等合并为空白符,字体大小不为 0 的情况下,空白符自然占据一定的宽度,使用inline-block 会产生元素间的空隙
  • 简单来说:inline-block 元素可以 设置宽高,不会换行,不会占满一行
  • 如何去除空隙?
    (1)如图,两个hello 之间有个缝隙,这是为什么呢?


    image

    从图中的HTML的代码中我们可以看到,2个span元素之间有个空格(转行),解决缝隙的办法就是将2个span并排写在一起就好了。

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

(2)在外层包裹一个div,设置其字体大小为0,然后在box内部重新设置回去即可。

//HTML
<div class = "wrap">
    <span class="box">hello</span>
    <span class="box">hello</span>
</div>

//CSS
.wrap{
  font-size: 0;
}
.box{
  border:1px solid black;
  width: 100px;
  display:inline-block;
  font-size: 14px;
}

image
  • 如图,高度不同如何顶端对齐?
    当给两边的span给定不同的宽高和内容大小以后,结果两个元素内容依然以内容的基线对齐?为什么?因为该box定义为 display: inline-block 那么它就有行内元素的一个特性,即内容默认以基线对齐。
image

那么,该使用什么方式让他们底部/顶部对齐呢?

vertical-align: top ; //以顶端对齐

vertical-align: bottom; //以底部对齐。

参考链接:

块级元素

行内元素和块级元素的具体区别是什么?inline-block是什么?(面试题目)

CSS块级元素和行内元素

6. CSS sprite 是什么?

  • CSS 精灵图 :将不同的图片/图标合并到一张图片上

雪碧图被运用在众多使用了很多小图标的网站上。相对于把每张小图标以.png格式文件的形式引用到页面上,使用雪碧图只需要引用一张图片,对内存和带宽更加友好。

举例:打开淘宝网站选择其中一个小图标,右键审查元素找到该图片的链接,实际上就是后面一整张图片使用绝对定位得到该图片的位置。

使用精灵图的 优点:可以减少网络请求,提高网络加载性能。

使用精灵图的 缺点:无法缩放,无法修改图片。

image
image

CSS 精灵图自动化生成工具:css sprites generator

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

有两种方式——隐藏 or 透明

  • 隐藏:看不见,但是不占用位置
    display: none :消失,不占用位置 ​
  • 透明:看不见,但是占用位置
    (1)opacity: 0 设置透明度为0,即看不见被该元素修饰的东西,但是依然占用位置
    (2)visility: hideen 隐藏内容,但是依然占用位置
    (3)background-color:rgba(0,0,0,0) 设置背景色透明,只是针对于背景色为透明。

8.使用精灵图制作效果

  • 方法一:使用本地合并精灵图,代码和预览
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
  <style>
    .icon{
       width:250px;
      height:220px;      
      position:relative;
      background:url(https://i.loli.net/2017/11/23/5a16ef20f2d9d.png) -230px
  }
  .icon:hover{
      background:url(https://i.loli.net/2017/11/23/5a16ef20f2d9d.png) 
  }
  </style>
</head>
<body>
<div class="icon"></div>
</body>
</html>

  • 方法二:在iconfont上使用线上链接实现 ,预览链接
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
<style>
@font-face {
  font-family: 'iconfont';  /* project id 485490 */
  src: url('//at.alicdn.com/t/font_485490_p073rf19odyujtt9.eot');
  src: url('//at.alicdn.com/t/font_485490_p073rf19odyujtt9.eot?#iefix') format('embedded-opentype'),
  url('//at.alicdn.com/t/font_485490_p073rf19odyujtt9.woff') format('woff'),
  url('//at.alicdn.com/t/font_485490_p073rf19odyujtt9.ttf') format('truetype'),
  url('//at.alicdn.com/t/font_485490_p073rf19odyujtt9.svg#iconfont') format('svg');
}
.iconfont{
    font-family:"iconfont" !important;
    font-size:160px;
    font-style:normal;
    -webkit-font-smoothing: antialiased;
    -webkit-text-stroke-width: 0.2px;
    -moz-osx-font-smoothing: grayscale;
    color:#1296DB;
}
.iconfont:hover{
    color:#D81E06;
}

</style>
</head>
<body>
<i class="iconfont">&#xe600;</i>
</body>
</html>
初始效果

鼠标悬浮效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345