CSS调试

CSS调试

CSS调试就是为什么我写的CSS规则没有生效的事情。

对于后端程序员来说,没有什么比调试更重要的事!我之前做openjdk7移植那会,主要就是使用gdb去调试各种各种的bug。当我看到我所写的CSS没有达到预期的效果,这个时候就要进行调试了!

嗯,我不得不说的是,前端的CSS调试和后端的调试是不同的。后端web调试,主要依靠手指,因为需要一步一步点击鼠标嘛!当然,也不完全,如果调试复杂的后端程序时,还是首先需要使用脑子的,此时的逻辑分析是第一位的;前端的CSS调试不一样,需要脑子!

调试原则

此处列出的原则,取之于《调试九法——软硬件的调试之道》。此本书适合所有需要逻辑思考的软硬件调试的地方。

  • 理解系统

系统的基本运行机理是什么。CSS层叠规则、浮动、定位、字体、文本属性等需要有一个基本了解,否则出了问题,都不知道是CSS那一方面的。

  • 精简代码,制造失败

制造失败,这个原则在后端调试中,就是要让问题复现!有些问题是偶然发生的,这类问题在后端调试中比较难的问题,解决此类问题的首要任务,就是让这个问题重复出现,起码出现的几率要变大,这样可以降低调试的难度。

在前端调试中,也一样,我们需要简化,然后让其失败!只留足够的htmlcss代码,然后让问题出现。

调试工具

调试工具一般是PC端的chrome浏览器的chrome-dev,以及fireboxfirebug工具。有时我们也需要看代码在手机端到底发生了什么,尤其是现在微信圈这么火爆,免不了需要在真机上运行代码,分析原因。首先介绍一些PC端使用这些工具的场景。

  1. 如果考虑某一CSS属性是否有效果,或者在原有的基础上,添加一条、两条CSS规则,使用chrome-dev最方便,因为只要鼠标点击一下,而且还有CSS规则的提示功能,好用。如下图所示:

    css-debug-webdev-addclass.png

  2. 如果需要实时让CSS规则是否生效,在chrome和firefox中都很方便,下图给出在chrome的截图:


    css-debug-webdev-editclass.png
  1. 如果需要大规模的书写CSS规则,并且实时看到效果,我推荐Web DevelopmentToggle Web Development Toolbar,真心好用。在CSS菜单下面有编辑CSS菜单,在里面编写的CSS规则,你可以实时看到效果。

    css-debug-webdev.png

  2. 有时,需要分离问题,去除其它影响因素,此时需要复制一段html代码进行单独分析,这个功能在firefoxchrome中都有,下图是chrome的使用截图。

    css-debug-webdev-copyhtml.png

  1. 调试的时候,可能会通过设置DOM元素的border、background-color、outline,此处推荐使用outline,因为使用border可能会影响布局。下面是一个简单的事例代码:

     .css-debug{outline:1px dashed red;}
    
  2. 使用javascript代码,为页面的所有DOM元素添加不同颜色的框来进行调试。此种方法比较暴力,最终显示效果比较混乱,这种功能在web development中存在,就是给某类型的元素添加特殊的标识。但这种功能也可能有其使用场景,比如没有web development,或者可以限制选择元素,让其给一部分DOM元素添加标识,而且此种功能的代码长度很短,来看一下:github CSS Layout Debugger

     //可以直接在chrome-dev的console里执行
     [].forEach.call(document.querySelectorAll("*"),function(a){a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)})
    

微信端的手机调试,有两种方案:

使用真机调试,我测试了小米的手机。首先和调试android应用一样,你要使用usb连接手机,打开usb调试功能;其次使用chrome浏览器的more tools > remote device,进行连接,如下图的截图所示:
css-debug-webdev-wechat-debug1.png

另一种方案,使用微信团队开源的针对手机端的github vConsole

常见CSS案例

案例篇就是常见的CSS陷阱,这种问题的最大可能是什么。特别是新手如我等之辈,没有经验,只能按个排除。我会不断收集整理这节内容。

  1. 是否是CSS语法问题

    使用CSS Lint 或者W3C CSS validator检查一下吧!

  2. 是否是CSS属性过新,浏览器不支持

    先到Can I Use?去检测一下浏览器是否支持此属性,然后考虑是否需要使用浏览器前缀或者css3的腻子脚本(Modernizr)去解决。

  3. 在各个浏览器上的显示样子不同

    使用重置样式。各个浏览器对默认的DOM元素的CSS样式是不一样的,你可以借鉴CSS框架的重置样式,比如Bootstrap的。

  4. 图片周边存在有趣的空白

    设置 display: block(图片默认是内联的,因此会有空白)

  5. 元素不显示、位置错误或者被遮挡

    是否是定位的问题?如果是定位问题,需要考虑距其最近的,设置position属性的父元素。解决此类问题你需要明白绝对定位、相对定位、固定定位、静态定位的知识。

    display属性是什么?是inline还是block属性?改变此属性看看。对于占位的span元素,可以添加一些内容进去看看是否可以显示。完整的display属性列表看这里(MDN docs display page

    transform 及 opacity 属性是什么? z-index值呢?

  6. 伪元素不显示

    设置 ‘content’的值?

  7. 图片大小问题不能控制

    设置图片的宽度为:width:100%,这样图片的大小便受控于其父空间的大小

  8. 元素排列不正确

    有浮动的元素?浮动的宽度有做过设置?大小是多少?padding和margin呢?可否用box-sizing属性去解决?

  9. 没有结束...

他山之石

Debugging CSS中文翻译

《调试九法——软硬件的调试之道》

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

推荐阅读更多精彩内容

  • 现在到处都是JavaScript,每天都能知道点新东西。一旦你入了门,你总能从这里或是那里领悟到很多知识。 一旦我...
    恩德_b0c2阅读 143评论 0 0
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • CSS Layout Debugger https://gist.github.com/addyosmani/fd...
    蓝浅蓝深阅读 267评论 0 0
  • 看过这样一个故事:一个妈妈是大学教授,爸爸是政府官员的孩子,从小各种捣乱,每次被幼儿园遣送回家后,爸爸都会打他,而...
    若水希言阅读 572评论 4 5
  • 我有明亮的眼睛 却看不到风景 存于何处 我有健全的双手 却触不到温暖 藏于何方 我有行走的双脚 却走不到前方 通于...
    疯人只愿阅读 215评论 0 1