By Conmajia
March 9, 2018

剩下的那一半全部扑街了

世纪之初,BKY那些花里胡哨的预设皮肤曾经让初识网络的懵懂学子雀跃不已. 然而以现在的审美眼光看来,这些带着一股子扑面而来的浓厚乡土气息的丑陋界面,根本就是网络泡沫时代留下的泛着油光的渣滓. 当你深入了解隐藏在它们身后的拙劣代码之后,一阵阵波澜起伏的悸动不停在你的胃中翻腾。


所幸BKY留出了几乎不加限制的自定义皮肤接口,使得闲极无聊的博主们能有机会给自己的页面做上一套完整的 facelift. 我也曾尝试过修改博客皮肤,可是这种狂热式的冲动在我打开网页源代码的几乎同一瞬间即告分崩离析。

凌乱的布局和命名

记得我在初学 HTML 的时候,只会在 Dreamweaver 里用复杂的 <table> 来排列各个页面内容。某天一位号称浸淫网络世界多年的大神看不过去,像兜售黄色影碟的小贩一样把我拉到无人处,用只有我们俩能听到的声音悄悄告诉我有一个叫 division 的好东西可以拿来排版。从此我的网页上开始出现了 <div> 的曼妙身姿。一个、两个、三个,年岁渐长,<div> 也见长,终于我迷失在错综复杂的布局中,完全不记得谁是谁了。从那时起,一种莫名的崇拜之情就深深植根在我心底。在我看来,那些完全使用 <div> 布局的页面,无一不是出自大师之手,直到我在博客的页面上点击了「查看源代码」为止。

▲ 我脆弱的信仰被残忍的击碎

它来自某个默认皮肤的源代码,充满了无用嵌套的 <div> 标签,再搭配五花八门的id名字,让我恍惚间以为自己看到的是一名套着 5 层廉价秋衣的淳朴大汉,上面印满了 SPORT 和 FASHION 这样图腾般的英文。无论是 idclass 间游刃有余的切换,还是 post_detailpostContent 之类风骚的 naming,更甚至是 c_b_p_desc 这样的后现代主义符号具像化,任何一个都能把我可怜的英文思维折磨得体无完肤。于是我只好沿着一个一个的 <div> 摸索过去,试图能在洋洋洒洒的代码汪洋里找到一盏指路的灯塔。可是当我最终整理出了页面的布局之后,现实却结结实实地抽了我一个大嘴巴子。

▲ 默认的布局

这美轮美奂的布局,挟带着网易新闻评论区的腥风血雨,终于完全赤裸地呈现在了我眼前。

▲ 网易评论区,每一个键盘侠心目中的圣城麦加

那层层叠叠的框架像是一圈一圈的年轮般疯狂生长,迅速占满了我那点可怜的脑容量,将我击晕在地。悠悠醒转后,我默默地关上电脑,以近乎修枯禅的虔诚沉思了三天三夜,终于决定先从整理布局开始做起。

整理布局

在这荆棘遍布的 <div> 迷宫中徘徊几天后,我好歹理出了一张脑图来指引继续前行的道路。

▲ mind map才是真正的清真

我一面抗拒着充满魔性的标签命名,一面标记出那些多余的 <div>。相信我,这绝对是一个痛苦的过程,尤其对我这样可悲的强迫症患者来说,需要在思考的同时,努力压制住挖出BKY这些前端工程师早逝的英语老师鞭尸的强烈想法。

▲ 如果可能,我更希望你他妈能叫它们abcd

删除多余的层叠 <div>


据科学家统计,网络喷子的记忆只有 7 秒,为了在这短暂的 highlight 里完成验证,我给自己准备了一个简单的例子。

▼ 试验:一个例子

全是他妈的垃圾

删除废物

Node 1

Node 1-1

Node 1-1-1

Node 1-1-1-1
Node 1-1-1-2
Node 1-2
Node 1-3

能够玩转BKY皮肤的 geek,有一半最后都成为了前端大师的更多相关文章

  1. 玩转 ”hello word“,Python程序员大多数都没有实现过

    很多人学习Python很长时间,对于'hello word' 的认知,很多已经从事Python多年的程序员的认知也就只有: print(hello wrod) 但是有没有让hello word 变得不 ...

  2. 阿里小哥带你玩转JVM:揭秘try-catch-finally在JVM底层都干了些啥?

    让我们准备一个函数:   然后,反编译他的字节码:   首先我们介绍异常表:在编译生成的字节码中,每个方法都附带一个异常表. 异常表中的每一个条目代表一个异常处理器,并且由 from 指针.to 指针 ...

  3. [转载] 深入 nginx 架构

    原文: http://www.cnbeta.com/articles/402709.htm 了解 nginx 架构帮助我们学习如何开发高性能 web 服务. 为了更好地理解设计,你需要了解NGINX是 ...

  4. 深入NGINX:我们如何设计它的性能和扩展性

    为了更好地理解设计,你需要了解NGINX是如何工作的.NGINX之所以能在性能上如此优越,是由于其背后的设计.许多web服务器和应用服务器使用简单的线程的(threaded).或基于流程的 (proc ...

  5. 深入NGINX:nginx高性能的实现原理

    深入NGINX:我们如何设计它的性能和扩展性 来源: cnBeta  原文链接 英文原文:Inside NGINX: How We Designed for Performance & Sca ...

  6. Nginx 原理篇

    前言 在学习 Nginx 之前,我们首先有必要搞清楚下面几个问题: 1. Web服务器是怎么工作的? 2. Apache 与 Nginx 有何异同? 3. Nginx 工作模式是怎样的? 下面就围绕这 ...

  7. ngnix高并发的原理实现(转)

    英文原文:Inside NGINX: How We Designed for Performance & Scale 为了更好地理解设计,你需要了解NGINX是如何工作的.NGINX之所以能在 ...

  8. MFC加载皮肤 转自:http://www.cctry.com/thread-4032-1-1.html

    VC皮肤库SkinSharp 1.0.6.6的使用: SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件.SkinSharp作为换肤控件,只需要在您的程序中添加一行代码,就能让 ...

  9. VC皮肤库SkinSharp 1.0.6.6的使用

    SkinSharp又称Skin#,是Windows环境下一款强大的换肤组件. SkinSharp作为换肤控件,仅仅须要在您的程序中加入一行代码,就能让您的界面焕然一新,并拥有多种主题风格和色调的动态切 ...

随机推荐

  1. RVM 安装 Ruby

    RVM 是一个命令行工具,可以提供一个便捷的多版本 Ruby 环境的管理和切换. https://rvm.io/ 如果你打算学习 Ruby / Rails, RVM 是必不可少的工具之一. 这里所有的 ...

  2. 移动通信最先进的音频编解码器EVS及用好要做的工作

    语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...

  3. 大白话5分钟带你走进人工智能-第四节最大似然推导mse损失函数(深度解析最小二乘来源)(2)

    第四节  最大似然推导mse损失函数(深度解析最小二乘来源)(2) 上一节我们说了极大似然的思想以及似然函数的意义,了解了要使模型最好的参数值就要使似然函数最大,同时损失函数(最小二乘)最小,留下了一 ...

  4. 深度学习之注意力机制(Attention Mechanism)和Seq2Seq

    这篇文章整理有关注意力机制(Attention Mechanism )的知识,主要涉及以下几点内容: 1.注意力机制是为了解决什么问题而提出来的? 2.软性注意力机制的数学原理: 3.软性注意力机制. ...

  5. jdk源码阅读笔记-String

    本人自学java两年,有幸初入这个行业,所以功力尚浅,本着学习与交流的态度写一些学习随笔,什么错误的地方,热烈地希望园友们提出来,我们共同进步!这是我入园写的第一篇文章,写得可能会很乱. 一.什么是S ...

  6. php session序列化攻击面浅析

    目录 0x00 首先,session_start()是什么? 0x01 初识php-session序列化机制 0x02 php_serialize引擎(反)序列化测试 0x03 当使用不同的引擎来处理 ...

  7. 依赖注入容器-- Autofac

    目录: 一.简介 二.如何使用 2.1.基本使用 2.2.接口使用 2.3. 其他注入 2.4. 注入的生命周期 一.简介 在上一篇文章中讲到替换默认服务容器,我们选择了Autofac Autofac ...

  8. css节点选择器

    基础选择器 基础选择器是选择器的所有选择器的基本组成元素,也最简单,包含如下5个类别: ID选择器 标签选择器 类选择器 属性选择器:类选择器算是一个特殊的属性选择器,通用的属性选择器举例如下: #c ...

  9. (leetcode:选择不相邻元素,求和最大问题):打家劫舍(DP:198/213/337)

    题型:从数组中选择不相邻元素,求和最大 (1)对于数组中的每个元素,都存在两种可能性:(1)选择(2)不选择,所以对于这类问题,暴力方法(递归思路)的时间复杂度为:O(2^n): (2)递归思路中往往 ...

  10. 女朋友也能看懂的Zookeeper分布式锁原理

      前言 关于分布式锁,在互联网行业的使用场景还是比较多的,比如电商的库存扣减,秒杀活动,集群定时任务执行等需要进程互斥的场景.而实现分布式锁的手段也很多,大家比较常见的就是redis跟zookeep ...