您现在的位置是:知识 >>正文
HTML中可能遇到的问题以及解决方法
知识74199人已围观
简介写HTML的时候,最让人抓狂的不是语法多难,而是明明代码看着没问题,浏览器就是不按你想的来。上周帮同事调一个页面,他写了``嵌套了七层,结果一个margin-top把父元素也带下来了——这就是典型的m ...
写HTML的问题时候,最让人抓狂的及解决方不是语法多难,而是问题明明代码看着没问题,浏览器就是及解决方不按你想的来。上周帮同事调一个页面,问题他写了`
`嵌套了七层,及解决方结果一个margin-top把父元素也带下来了——这就是问题典型的margin塌陷。父元素没有border或padding,及解决方子元素的问题margin-top直接“穿透”上去,整个布局全乱。及解决方解决办法很简单:给父元素加`overflow: hidden`,问题或者用`padding-top`代替子元素的及解决方margin-top。我一般直接上`display: flow-root`,问题一行搞定,及解决方干净利落。问题
另一个高频坑是浮动元素导致父容器高度塌陷。你写了个`
`里面放两个`float: left`的子元素,结果父元素高度变成0,下面的内容全叠上来。以前流行加个空``,现在更推荐给父元素加`display: flex`或者`overflow: auto`。但注意,`overflow: auto`在移动端可能触发滚动条,别问我怎么知道的——被产品经理追着改了三版。
表单里的``和`
图片下方总有一条神秘空隙?那是``默认`display: inline`,基线对齐留下的。改成`display: block`或者给父元素设`line-height: 0`都行。我习惯直接`img { display: block; max-width: 100%; height: auto; }`,三行代码省掉一堆麻烦。说到图片,`
`的`alt`属性别偷懒不写,除了无障碍访问,图片加载失败时至少能看到文字提示,比一个破图标强。
CSS选择器权重打架也常遇到。你写了个`.nav a { color: red; }`,结果发现链接还是蓝色,因为浏览器默认样式或者某个`#id`选择器权重更高。用开发者工具看Computed面板,能清楚看到哪条规则赢了。实在不行加`!important`?可以,但别上瘾——我见过一个项目里`!important`出现了200多次,后来改一个颜色要全局搜索替换,那酸爽。
JavaScript操作DOM时,`getElementById`返回null是新手必经之路。脚本放在`
`里,DOM还没解析完就执行,当然找不到元素。把`