前端路上遇见的坑

  1. VSCode 在.css文件上按F5调试运行会让软件出现一个.vscode的文件夹,它会导致html无法正常打开,删除它才能恢复正常。

  1. setAttribute注意点:

domEle.setAttribute(name, value) 可以去设置dom元素的属性, name要设置的属性名,value要设置的属性值。

如果不存在具有指定名称的属性,则创建新属性。如果存在,则修改属性值类似 getAttribute() 方法,setAttribute() 只能通过元素节点对象调用函数

  1. 当想使用setAttribute修改width属性时

错误写法:

setAttribute(“width”, “100px”);

正确写法:

setAttribute(“style”, “width:100px”)

原因:width属性属于标签属性style的子属性,所以不能直接修改width。同理像display transform什么的也需要修改style这个对象。

而且注意:setAttribute这个方法相当于在html标签中写行内样式,而且修改的是style的值,所以写多个setAttribute只能生效最后一个,而且写的时候css样式不要写成小驼峰样子,因为本来就是行内样式。

只有div.style.xxxXxx才需要遵循小驼峰规则,style.xxx虽然也是修改行内样式(dom对象的style属性是空的,也是因为这个style里面存的是行内样式),但是style.xxx 修改的只是那个属性的值,所以不会产生覆盖情况,建议使用style.xxx来修改dom对象的样式!

也正是因为style只能获取/修改元素的行内样式的原因,想要获取一个元素的宽高,用 div.style.width 一般是无法获取的,因为开发时都用css类名写样式,而不是直接写行内样式。应该使用:clientWidth 才对。或者使用JQuery的.css()方法也可以获取,获取的是 '200px'这样的带单位的字符串。

  1. 在li浮动时,如果里面结构是 li > a >img ,且没给父元素ul高度,那么很可能会导致 li盒子 在ul的顶部,而img 却在下面,没有在盒子里面。 解决方法:给ul设置一个高度,防止其高度为0。

  1. 父元素里面的子元素不设置宽度的话就是和父元素一样宽,但是有时候会出现给一个 设置了width:100% 的子元素边框,且父元素有溢出隐藏的时候,子元素左右的边框有一边消失不见了(通常是右边框),这是因为没有设置width的原因,如:一个子元素应为 400×400,同时有1px 的边框,如果只设置height=400px的话,子元素的实际大小是 400×402 px 而且右边框消失了,需要给子元素设置上 width:100% 子元素变成了402×402 px,边框就出现了。

  1. 如果a标签出现鼠标hover时抖动的情况,可能是因为边框的原因,有两次这样的情况:

  • 之前给该区域所有a标签设置了边框 —— 为抖动的a标签按钮添加 border:none 解决

  • 为a标签hover时增加了border导致抖动 —— 添加 box-sizing:border-box 让图片向内抖动 或者 给a标签先设置一个transparent的border,hover时仅改变颜色即可解决。

  1. img标签不显示,可能是因为用了base标签对所有的a标签加了网上绝对路径的href前缀,且 img 标签在a标签里面被包裹着,导致路径变成了taobao.com/image/...了 路径错误导致图片无法显示。

  1. html默认不是占据100%高度的,所以即使给body设置了 height:100% body的高度也和html一样是自适应大小的,需要同时给这两个元素设置高度为100%才能使高度的样式生效,这个问题在移动端布局中有可能遇到。

  1. 谷歌浏览器调试工具 在手机端调试时,拖动手机模拟区域的最左侧和最右侧可能会导致 设置width:100%的盒子 宽度 比模拟区域大的情况。

  1. 在移动端适配时,如果用vw布局,会出现当文字在屏幕下面时(即 html出现滚动条时),即使给html高度设置100%,html 和body的高度也不是设备的高,这一点在body有一个渐变的背景色时非常明显。

解决方法:当用户设备是PC端时,把html 和 body 的高度设置为 auto,这样即使有滚动条出现,html和body的高度也始终大于内容的高度(给body 一个padding-bottom 来让内容更居中);

当用户设备是移动端时,把html 和body的高度都设置为100%,让内容不会出现滚动条,渐变的背景色也就不会重复了。

也可以不要渐变的背景色,直接可以完全解决问题。出现问题的根本原因在于 出现滚动条时,html 设置height =100% 其实height的值 是在不滑动滚动条时,用户可以看到的高度(clientHeight),而不是全部内容的高度。

  1. p标签高度为40px时,如果行高给上40px,第一行文字是垂直居中了,但是如果文字过长,有第二行文字的话,会造成第二行文字溢出p标签容器的情况,即使给上padding-bottom也没办法让这个第二行文字改变其位置,这时候,应该修改行高为20px才行。

  1. 即使使用less来书写css样式,最好也不要用相同的类名,因为后代选择器可以跳过中间一些元素也同样能够正常生效,所以不同位置的相同类名也可能会造成多个样式相互覆盖!如果实在要用hd、bd的话,最好加上一个前缀,如warn_hd、otherInfo_bd。

  1. foreach不能使用return来结束循环,但可以开始下一次循环,在foreach里面用return不报错,效果跟 普通for循环里面的 continue一样,且foreach内不能使用 continue 和break。

  1. layui的js文件必须放置在body结束之前,否则不会layui.css的部分效果不能起效。

  1. layui渲染机制的特性 会导致js动态添加的元素无法被layui监听到,layui也就不会重新渲染select区域,所以有时会出现 F12检查中发现html结构已经存在了,但是页面上就是没有相应的效果,这时候便需要在修改layui的html结构后,手动告知layui重新渲染一下:layui.form.render() (该问题出现于select结构中)

猜你喜欢

转载自blog.csdn.net/Andye11/article/details/129091571
今日推荐