V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alwayshere
V2EX  ›  程序员

一个网站的所有 HTML 都可以用 div 标签解决,为什么还会有各种不同的标签??

  •  
  •   alwayshere · 2017-10-26 10:01:46 +08:00 · 18171 次点击
    这是一个创建于 2583 天前的主题,其中的信息可能已经有所发展或是发生改变。

    href 属性可以用 js 的 location.href 代替,img 标签可以拿 background-image 配合 background-size 解决,input 可以用 div 的 contentEditable 解决,其余的什么 p、ul、li、span 等等更不用说了,都可以解决,而且我印象中谷歌也表示过,html 标签不影响 SEO,那么我全部用纯 div 写一个网页有什么弊端?

    136 条回复    2017-10-28 08:27:57 +08:00
    1  2  
    taojing10
        101
    taojing10  
       2017-10-27 08:41:35 +08:00 via Android
    没必要吧
    stephenliubp
        102
    stephenliubp  
       2017-10-27 08:43:17 +08:00
    就是 iOS 中几乎所有的东西都可以用自定义 UIView 来实现,为什么还存在那么多控件一样。道理不言而喻
    linxl
        103
    linxl  
       2017-10-27 08:47:44 +08:00
    我就记得三个字 语义化
    jokerjoker
        104
    jokerjoker  
       2017-10-27 08:55:43 +08:00   ❤️ 2
    如果你写个 select,别人一看代码就知道这是个下拉菜单,如果你写个 a,别人一看就知道是可以点击的超链接,如果你写个 ul 一看就是和列表有关的东西.
    一个语言最重要的部分,并不是实现怎样的功能,而代码是需要人写的,可读性永远是最重要的部分.
    youxiachai
        105
    youxiachai  
       2017-10-27 09:07:50 +08:00
    @Mark24 你是没看到正面回答的?冷嘲热讽..
    是因为 lz 压根就不回答那些问题
    allce231
        106
    allce231  
       2017-10-27 09:08:04 +08:00
    你要这样写也没人管你啊
    quxw
        107
    quxw  
       2017-10-27 09:27:31 +08:00
    是都可以用 div, 然后需要用一堆 class,来对这些 div 做分类,配置相应的默认属性。
    这时 tag 都没意义了,因为都一样的,全看 class。
    tag 这一层就被浪费了(而且是大家最熟悉一层,你自己定义的 class 别人又看不懂)。

    这个问题就像,汇编什么都能做,要高级语言干嘛。
    linus3389
        108
    linus3389  
       2017-10-27 09:47:04 +08:00
    @codehz 凡是也不是绝对的,当 webGL 足够好用的使用搞不好以后就不需要 css 和 html 标签了呢,webAsm 普及了后呢,可能又会是另一番格局,不要对现有掌握的技术与标准就绝对的肯定,保持一颗维新的心。
    dot
        109
    dot  
       2017-10-27 10:01:39 +08:00
    HTML 1.0 是从各种标签开始的……
    Persephone
        110
    Persephone  
       2017-10-27 10:09:20 +08:00
    甚至可以自己定义一个标签

    但是最大的问题是,全用 div,在一些特殊浏览器上根本无法正常显示,而且一旦脱离开 Javascript,这个网页是没法用的。

    HTML 本来就是一个文档格式,随使用者自由发挥。
    c447279704
        111
    c447279704  
       2017-10-27 10:14:55 +08:00
    简单
    xiaoxi123
        112
    xiaoxi123  
       2017-10-27 10:21:48 +08:00
    语义化
    cctv1005s927
        113
    cctv1005s927  
       2017-10-27 10:24:35 +08:00
    @Reign
    当然是最好不要 [全部] 这样做,因为你要实现复用,和一些三方的插件引入,例如 jquery,bootstrap 这样的第三方插件。
    所以最好不要将 css 和 js 混在同一个 html
    cctv1005s927
        114
    cctv1005s927  
       2017-10-27 10:27:52 +08:00
    @j

    感谢反对。

    我在回复中有举例情况 [网络状况不好时] ,

    最常见的就是 github 在国内网络不好时,导致 js 和 css 无法被加载出来,但是你依然能够看到 github 页面的基本框架,能读懂它。

    如果全是 div 的话,此时可读性就差很多。
    ty89
        115
    ty89  
       2017-10-27 10:33:28 +08:00
    可以 b 一波了
    maybeonly
        116
    maybeonly  
       2017-10-27 10:41:33 +08:00
    标签是有自己的含义的。比如 a 表示一个链接,h1 等等表示标题……
    虽然都用 div 可以渲染到差不多的样子,但是遇到辅助功能的时候就 gg 了。
    coolzjy
        117
    coolzjy  
       2017-10-27 10:46:02 +08:00
    所有的循环都可以写成递归,所有的 while 都可以写成 for,所有的 else 都可以改写成 if,那这些东西存在的意义是什么?

    写着方便,看着明白呗。
    klren0312
        118
    klren0312  
       2017-10-27 12:53:01 +08:00
    上次公司给我的页面是 axure 生成的,让我改呢,拿标签乱的。。。
    stabc
        119
    stabc  
       2017-10-27 12:57:58 +08:00
    就当多一种使用方式吧。就好像 jquery 里的.ajax 和.post
    fuermosi777
        120
    fuermosi777  
       2017-10-27 13:40:02 +08:00
    难道没人考虑标签有助于 accessibility 吗?
    caola
        121
    caola  
       2017-10-27 14:36:47 +08:00
    @alwayshere 为什么有这些标签,是为了减少学习成本,和开发成本,让开发者能快速的完成项目。
    就比如 jquery 一样,为什么那么多人使用 jquery,而不直接写原生的 js 代码?
    还不就是能更快速的实现功能,节约时间成本。
    momocraft
        122
    momocraft  
       2017-10-27 14:42:22 +08:00
    一个人的所有需求都可以用土豆解决 为什么你
    linpf
        123
    linpf  
       2017-10-27 15:31:57 +08:00
    当年,CSS 还没有出现的时候……
    Marfal
        124
    Marfal  
       2017-10-27 15:56:39 +08:00
    KuroNekoFan
        125
    KuroNekoFan  
       2017-10-27 16:35:40 +08:00
    肯定是可以的,不过一般没人这么干
    19629037902
        126
    19629037902  
       2017-10-27 17:05:27 +08:00
    一个字:方便
    daisyxdx
        127
    daisyxdx  
       2017-10-27 17:21:50 +08:00
    可读性
    seasolzombie
        128
    seasolzombie  
       2017-10-27 17:38:03 +08:00 via Android
    html5 的出现已经强调了语义化很重要,源码是给人看的,不是给机器看的。标签不同不仅仅是元素名字不同,原型也可能有差别
    UnknownR
        129
    UnknownR  
       2017-10-27 17:43:46 +08:00
    定义,方便阅读与查阅,比如使用文本处理 html 快速定位内容的时候,标签的作用就显得非常重要了
    wuxinli1025
        130
    wuxinli1025  
       2017-10-27 19:10:08 +08:00
    不仅可以用<div>标签, 还可以用自定义的标签呢。
    Vonex
        131
    Vonex  
       2017-10-27 22:23:35 +08:00
    机器怎么都是看得懂的,人就不一定了
    spolarbear
        132
    spolarbear  
       2017-10-27 23:18:10 +08:00
    就好比每句 html 都不直接写,而放在 javascript 里面写“ document.write...”的意思。。。
    Jackeriss
        133
    Jackeriss  
       2017-10-27 23:23:54 +08:00 via iPhone
    有盐就已经是咸的了,为什么还要放酱油?
    Jackeriss
        134
    Jackeriss  
       2017-10-27 23:25:08 +08:00 via iPhone
    @Jackeriss 当然是为了色香味俱全!
    millionart
        135
    millionart  
       2017-10-28 06:04:34 +08:00
    引用楼主第一句话
    “ href 属性可以用 js 的 location.href 代替”
    使用了 js 的网页不是纯 HTML

    引用楼主第二句话
    “ img 标签可以拿 background-image 配合 background-size 解决”
    background-image 和 background-size 是 HTML 中 标签 的 属性,但早期的部分浏览器并不支持这类属性,因为当时没有更高级的视觉需求,所以这些表现形式分别内嵌入了标签自身,而衍生出了不同的标签以表现样式,直到人们发现同样的页面在不同浏览器下表现的样子大相径庭,才有了这些补充

    所以回答楼主的问题:
    1 纯 div 不可能解决所有 HTML 需求
    2 多种类标签是语义化没错,但更早是一个历史问题,因此 HTML5 开始支持自定义标签了

    说点题外话:
    其实这类视觉类属性在近年已经基本不使用了,因为他们被更高级的叫做 CSS 的东西和叫做 内容样式分离 的设计思路代替了,那段时间是个混乱的时代,很多人听说过 XHTML,但少有人听说过 xml+xsl,是一种更深层的“内容表现分离”,大约在 03 年时候我尝试过这种设计,印象中魔兽世界国服第一代论坛就是采用这种技术,优点是速度极快,缺点是浏览器兼容性较差(因为思路太超前),可惜这种技术不知为何并没有被普及,现在也没人用了
    wmfei
        136
    wmfei  
       2017-10-28 08:27:57 +08:00
    如果你的代码只是给自己看,那就无所谓
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.