专栏名称: 众成翻译
翻译,求知的另一种表达
目录
相关文章推荐
广东公共DV现场  ·  学生考核要提供消费凭证?高校回应 ·  4 小时前  
广东台今日关注  ·  回暖+回南+冷空气+强对流,广东未来一周天气 ... ·  8 小时前  
开平广播电视台  ·  定了!价格大降 ·  2 天前  
开平广播电视台  ·  @开平街坊,家里装摄像头的要注意了!民警提醒! ·  2 天前  
佛山电视台  ·  明天出分!复试攻略都在这儿了→ ·  3 天前  
51好读  ›  专栏  ›  众成翻译

网页响应超简单:有CSS变量我怕谁

众成翻译  · 掘金  ·  · 2018-04-02 11:33

正文

原文出处 How to make responsiveness super simple with CSS Variables

学习如何用CSS变量创建下列响应

在创新的2018年,看看如何简单做成响应性的网站

如果你未曾听说过CSS变量,那么我告诉你,它就是CSS的一种新功能,可以让你拥有在样式表中使用变量的能力,这样做时并不需要什么特别的设置呦。

从本质上讲,CSS变量可以让你摆脱老式的样式设置:

h1 {

  font-size: 30px;

}
navbar > a {

  font-size: 30px;

}

…而是主张这样写:

:root {

  --base-font-size: 30px;

}
h1 {

  font-size: var(--base-font-size);

}
navbar > a {

  font-size: var(--base-font-size);

}

这样的语法看起来的确有点怪怪的,但如此一来,只要更改 --base-font-size 变量,就能在整个应用中改变字号了。

如果你想把CSS变量学明白,可以在Scrimba网站 我的免费互动CSS变量课程 上查看。

该课程包含8个互动截屏。

或者,如果你想了解该课程的更多情况,也可以在下面的文章中大致了解一下将会学习什么:

想要学习CSS变量吗?这儿有我的8段课程! CSS变量是先进浏览器令人兴奋不已的新技术。它给CSS带来了使用变量的能力…_medium.freecodecamp.org

还等什么,就来看看如何使用这项新技术轻松加愉快地建立起具有良好响应的网站吧。

所需要的设置

我们将为作品网站增加良好的响应性,就像下面这样:

从桌面计算机上看,还是不错的。但是,从下面左侧的图片可以看出,这种布局在手机上不太灵。

左图:在手机上一开始会是什么样子。右图:我们希望要什么样子。

在右图中,我们对样式做了一点改动,让她在手机上效果更好点。下面是我们所做的:

  1. 重新安排了 网格,使之纵向堆叠,而不是横跨两栏。
  2. 移动了 整个布局,使之向上提了一点。
  3. 调整了缩放 ,将字号调小了。

为了做这些,需要更改如下CSS:

h1 {

  font-size: 30px;

}
#navbar {

  margin: 30px 0;

}
#navbar a {

  font-size: 30px;

}
.grid {

  margin: 30px 0;

  grid-template-columns: 200px 200px;

}

更具体一点说,我们需要在媒体查询中做出下列调整:

  • h1 的字号大小降低为20px。
  • #navbar 上下的margin降低为 15px。
  • #navbar 内部的字号减少为 20px。
  • .grid 上方margin降低为15px。
  • .grid 从两列改变为一列。

提示: 当然,在这个应用中,甚至在这些选择器中,还存在很多其它的CSS,然而,在本课程中,我已经把媒体查询中的所有不需要改动的东西都去掉了。可以查看如下网站 this Scrimba playground 来获得完整的代码。

老办法

即使不使用CSS变量也可以把这些事情搞定。但会招致额外的大量代码,因为上面所有用黑圆点标记的项目都需要在媒体查询中拥有自己的选择器,像下面这样:

@media all and (max-width: 450px) {



  navbar {

    margin: 15px 0;

  }



  navbar a {

    font-size: 20px;

  }



  h1 {

    font-size: 20px;

  }
  .grid {

    margin: 15px 0;

    grid-template-columns: 200px;

  }
}

新办法

下面让我们来看如何使用CSS变量来解决这个问题。首先,要把我们将重复利用和更改的数值存储在变量的内部:

:root {

  --base-font-size: 30px;

  --columns: 200px 200px;

  --base-margin: 30px;

}

然后,在整个APP中简单地使用这些变量就行了:

#navbar {

  margin: var(--base-margin) 0;

}
#navbar a {

  font-size: var(--base-font-size);

}
h1 {

  font-size: var(--base-font-size);

}
.grid {

  margin: var(--base-margin) 0;

  grid-template-columns: var(--columns);

}

一旦进行了这样的设置之后,我们只要在媒体查询中简单地更改变量值就行了:







请到「今天看啥」查看全文


推荐文章
广东公共DV现场  ·  学生考核要提供消费凭证?高校回应
4 小时前
开平广播电视台  ·  定了!价格大降
2 天前
佛山电视台  ·  明天出分!复试攻略都在这儿了→
3 天前
读首诗再睡觉  ·  往事像大海翻腾,喧嚣在我耳边
7 年前
Bank资管  ·  区域银行金融市场部如何搭建?
7 年前
中国好文章  ·  易中天最洗脑的十句话,满满的干货!
7 年前