CSS 自学之路(二)

  • 其实 CSS 一开始设计 float 属性的主要目的是为了实现文本绕排图片的效果。 然而这个属性居然成了创建多栏布局的最简单方式。 先来看看 float 实现文本绕排的效果。
    img {
    float: left;

          width: 180px;
          height: 120px;
          margin: 0 12px;
      }
    
      p {
          width: 480px;
          margin: 12px;
          padding: 12px;
    
          border: 1px solid #ccc;
      }
    

demo01.png

当使用了 float 属性之后, 浮动的图片会从文本流中被移除,如果有文本跟在它后面,文本会自动绕开图片。

上面我们提到了,设置了 float 之后,图片就会脱离文档流,所以它的父元素也就看不到它了,这样就会出现一个问题,比如当父元素包裹不住图片的时候,父元素的紧邻兄弟节点会自动让出左边的空间,比如下面这样。
<section>
<img alt="picture" src="15.jpg" />
<p>
Section
</p>
</section>

    <footer>
        This is footer</footer>
    </footer>
demo02.png

有没有什么办法能解决上述这种尴尬的情景呢? 问题的答案是有的,而且有三种,下面来一一介绍。

  1. 为父元素添加 overflow:hidden
    section{
    overflow: hidden;
    }

    demo03.png

  2. 同时浮动父元素。 浮动父元素之后,它就会将它的子元素全部包含在自己内部(无论是浮动元素还是不浮动的元素), 所以我们还需要将父元素的宽度设置为与浏览器同宽,不然父元素会不断换行以包装不同的子元素。 还有,要在footer 中清除左浮动,不然 footer 会极力挤到 section 的旁边去。
    img {
    float: left;

        width: 180px;
        height: 120px;
     }
    
     section {
        float: left;
    
        width: 100%;
     }
    
     footer {
        clear: left;
     }
    
  3. 添加非浮动的清除元素。

     section:after{
        content: "";
        display: block;
        height:0;
        visibility: hidden;
        clear: both;
     }
    

  • 如果把 display 的值设置为 none, 该元素以及包含在其中的元素都不会在页面中显示,它们占用的空间也会被回收,就好像这些标记根本不存在一样。 于此相对应的属性是 visibility, 常用的两个值是 visiblehidden。 把 visibility 的值设置为 hidden 后,元素会不可见,但是它仍会占有其原本的空间,不会被回收。

  • 下面我们来讲讲背景图片和背景渐变的一些知识。 假如有一个 div , 为其设置很大的背景图片。

    div {
      width: 480px;
      height: 320px;
    
      background-image: url('15.jpg');
    }
    

demo04.png

显然这不是我要显示图片的全部,背景图片从左上角开始显示,超出容器的那部分不显示,可以手动指定要显示图片从何处开始, 需要借助 background-position 属性,接收两个值,用于指定水平和垂直方向上的起始原点, 可以使用的值为 top, right, bottom, right, center。下面我将两个值都设置为 center, 因为我想看图片的中间部分。

    background-position: center;

demo05.png

这样看上去好像比默认的情况好多了。 还可以设置背景图片的大小,这需要用到 background-size 属性。这个属性的取值如下

  1. 50% : 缩放图片,使其填充背景区的一半。
  2. 100px 50px : 把图片调整到 100 像素宽, 50 像素高。
  3. cover : 拉大图片,使其完全填满背景区,保持宽高比。
  4. contain : 缩放图片, 使其恰好适合背景区,保持宽高比。

下面是将 background-size 设置成 cover 的效果。

demo06.png

渐变分为两种,一种是线性渐变,一种是放射性渐变,从线性渐变开始说起。
div {
width: 480px;
height: 320px;

    background: linear-gradient(red,green);
  }
demo07.png

可见,线性渐变默认是从上到下的,当然我们可以根据我们的需要改变这种默认方式,比如我们让其从左到右渐变。
background: linear-gradient(to right,red,green);


demo08.png

甚至可以从左上角到右下角进行渐变。
background: linear-gradient(135deg, red, green);


demo09.png

不仅可以使用上述方式创建渐变,还有更灵活的方式,那就是设置渐变点,下面来看看渐变点的设置规则。
background: linear-gradient(red, white 50%, green);
demo10.png

在 50% 有一个渐变点,图形从 0%-50%,由红色逐渐向白色转变, 50%-100% 由白色到绿色转变。

background: linear-gradient(red 20%, white 50%, green 80%);


demo11.png

在 20% 和 80% 处有渐变点,意思是在 0% - 20% 一直保持红色,在 20% - 50% 从红色到白色渐变, 在50% - 80%,从白色到绿色渐变,在 80% - 100% 一致保持绿色。
background: linear-gradient(red,white 20%, green 50%, blue 80%, red);
demo12.png

在 20%,50%,80% 处有渐变点,在 0- 20% ,从红色到白色渐变, 在 20% - 50%, 从白色到绿色渐变, 在 50%- 80% 从绿色到蓝色渐变,在 80% - 100%, 从蓝色到红色渐变。

由于渐变是 CSS3 新属性,所以别忘了对浏览器进行适配,比如说下面这样。

   background: -webkit-linear-gradient(red, white 20%, green 50%, blue 80%, red);
   background: -o-linear-gradient(red, white 20%, green 50%, blue 80%, red);
   background: linear-gradient(red, white 20%, green 50%, blue 80%, red);

讲完了线性渐变,下面来看看放射性渐变。

  background: radial-gradient(white, red, green);
demo13.png

可见,图形为按照 白红绿 填充满。当然,我们还可以指定渐变形状,比如设置为圆形。

  background: radial-gradient(circle, white, red, green);
demo14.png

还可以设置放射中心的位置,比如下面这样。

  background: -webkit-radial-gradient(100px 100px, circle, white, red, green);

demo15.png

  • 关于设置文本的 line-height 属性,我们可以利用其实现文本垂直居中的效果。

    div {
      height: 32px;
    
      background: rgba(123,23,89,.5);
    }
    
    p {
      line-height: 32px;
    
      color: white;
    }
    

其中, divp 的父节点,我们通过设置 line-height 和父元素的高度相等,就可以让文本居中,这是为什么呢? 假设文本的大小为 16px,而这个时候的行高为 32px, 那么浏览器就会在文本的上下添加 (32-16)/2 px 的空白。

很多情况下,我们会使用第三方字体, Google Web Foots 是个不错的网站,我们只需要选中我们要使用的字体,它就会提供一个 link, 供我们使用字体,比如像下面这样。

demo16.png

在涉及文字排版的时候,最好借助网格线,比如下面这个图片


grid_18px.png

利用这个图片我们将文字与基线对齐,然后再将图片去除,这样我们的排版就会看起来很美观,比如下面这样。


demo17.png

本来还想介绍更多的内容,限于篇幅,只能在下一篇文章中再介绍了。

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

推荐阅读更多精彩内容

  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    wzhiq896阅读 1,741评论 0 2
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,308评论 0 11
  • 1.CSS简介 Cascading Style Sheet 层叠样式表 主要用来定义页面中的表现,HTML 描述页...
    hyt222阅读 822评论 0 0
  • 小马宋的《朋友圈的尖子生》中介绍了脱不花如何从17岁孤身闯京城,纵剑商海,成为得到APP联合创始人兼CEO的故事:...
    兰才人阅读 700评论 0 2
  • ∇ 最近还好吗?不谈感情我们就都快活。 每周一次“姐妹趴”,年华正好的女孩们逐渐迎来自己的全盛时代,可是终归少了什...
    陈小团阅读 724评论 6 7