V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ruandao
V2EX  ›  问与答

css 语义化, 有什么练习的网站 或者 书籍

  •  
  •   ruandao · 2019-06-10 20:45:41 +08:00 · 1450 次点击
    这是一个创建于 2028 天前的主题,其中的信息可能已经有所发展或是发生改变。

    嗯, 就譬如 css zen garden 说的, 用 语义化的 class 来布局

    我现在主要的问题是, 不知道要如何命名 一个控件的 class 比较合适

    现在用的是 bootstrap , 然后 直接在前端上 写 col-8 什么鬼的(但是我觉得这个是不符合语义的, 不符合 css zen garden 的)

    譬如 我想换个样式, 调整界面布局, 就会受到影响, 嗯, 应该是 写 语义的 class ,然后 在 sass 之类的, 把 布局信息 编辑到对应的 class 中, 这样 设计师, 可以给前端缓换布局(只要换个 css 文件即可, 而无需改动 html 代码)
    

    我需要 语义化 css class 设计的 一些原则, 和 对应的实践习题

    希望大家分享下, 哪些资源适合

    谢谢

    ===============

        搜到 oocss
    
    5 条回复    2019-06-10 23:11:19 +08:00
    ruandao
        1
    ruandao  
    OP
       2019-06-10 20:56:56 +08:00
    想了下

    这里面 匮乏的 主要是分类能力, 给一个东西, 分类 和 命名
    loading
        2
    loading  
       2019-06-10 21:26:20 +08:00 via Android   ❤️ 1
    semantic-ui

    这是语义化比较出色的,可以学习一下。
    leafiy
        3
    leafiy  
       2019-06-10 22:13:43 +08:00 via Android   ❤️ 1
    senmantic 的 css ……卧槽……太优美了。
    如果想实战练手,themeforest 找个销量好的 wp 主题,那 css 真的是精品
    P233
        4
    P233  
       2019-06-10 22:56:23 +08:00   ❤️ 1
    OOCSS 不是语义化,是指导样式复用的两个关键原则。

    命名方面,可以看一下 BEM 的命名规范,然后多参考几个框架的命名方式,很多都大同小异,比如圆角的按钮叫 pill,空心的按钮叫 ghost 等。

    追求这个的重点在于提高代码的可读性,class 命名不是给机器看的,而是给人看的,这个人可能是同事,也可能是几个月后的自己。依靠 CSS module,最后编译后的 CSS 基本都是 .a .b .c 这类,所以开发过程中命名长短无所谓,便于 class 的自说明更重要。

    最后,Bootstrap 的 col-8 很好用的!
    Tonni
        5
    Tonni  
       2019-06-10 23:11:19 +08:00   ❤️ 1
    没了解过 css zen garden,我说下我们使用的 css 命名规范吧,希望对你有帮助。

    > 我现在主要的问题是, 不知道要如何命名 一个控件的 class 比较合适

    可以学习下 BEM 命名规范,进阶一点可以学习下 BEMIT 命名规范。拿到设计稿时把设计稿综合对比,划分好模块和给每个模块对应的名字,比如一个 `navigation` 模块,开发时大家从一个基础的 layout 开始开发每个模块,因为在前期审核设计稿时就已经给每个模块命名了,所以多人开发时也不会有命名冲突。

    BEM 表示 block__element--modifier,刚才我们举例说的 `navigation` 是一个 block,block 是一个独立的模块,下面的子元素是 element,比如 navigation__link 表示 navigation 模块下的链接,如果 navigation 下的链接有多种样式的话就要使用 modifier 来声明了,比如 navigation__link--big 表示大的链接,navigation__link--small 表示小的链接,navigation__link 定义的是默认链接的样式。同理 modifier 也可以直接和 block 一起使用,比如在首页 navigation 是暗黑色的主题,默认的 navigation 模块定义的也是暗黑色的主题,但是到了另外页面变成了红色的主题,这个时候可以声明一个 modifer navigation--red 来 override 默认样式。

    默认样式:

    <nav class="navigation">
    <a class="navigation__link" href="/">Home</a>
    </nav>

    红色主题

    <nav class="navigation navigation--red">
    <a class="navigation__link" href="/">Home</a>
    </nav>

    通过这种方式也可以实现你提到的不改变 HTML 更改前端的样式,只不过这里是细分到模块的样式,不是整个页面的样式。如果你想实现一个 class/css 改变整个页面的样式的话可以看下 BEMIT 里面的 theme 的概念。

    http://getbem.com/naming/
    https://csswizardry.com/2015/08/bemit-taking-the-bem-naming-convention-a-step-further/
    https://csswizardry.com/2015/03/more-transparent-ui-code-with-namespaces/
    https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2686 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.