前端常见问题及技巧

本文介绍了CSS中常见的问题,如margin-top失效、img下边3像素问题、UI库样式穿透及flex元素缩放等,并提供了详细的解决方法,包括使用overflow隐藏、更改display属性、设置vertical-align以及使用flex布局等技巧。同时,探讨了对象比较的策略,通过JSON.stringify转换后对比。
摘要由CSDN通过智能技术生成

1.margin-top失效

代码如下:
								//html
 <div class="wrapper">
      <div class="outer">
        <div class="main"></div>
      </div>
    </div>
  </div>
								//css
.wrapper {
  width: 400px;
  height: 400px;
  border: 1px solid black;
}
.outer {
  width: 300px;
  height: 200px;
  background: red;
}
.main {
  width: 100px;
  height: 100px;
  background: blue;
  margin-top: 10px;
}

结果:
在这里插入图片描述

	原因:有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的margin-top
或者margin-bottom的值会“转移”给外层div

解决方法:

	1、在父层div加上:overflow:hidden;
	2.给父元素添加border。如果不想要border显示的话,可以设置border:1px solid transprent;
这样边框就是隐藏起来。
	3、把margin-top外边距改成padding-top内边距 (如果条件不允许,可以用第二种方法,更容易实现,
要考虑的因素更少)

2.img下边3像素问题

代码如下:
<div class="wrapper">
   <div><img src="../assets/image/company/scan.png" alt="logo">
        <img src="../assets/image/company/scan2.png" alt="logo">
   </div>
</div>

.wrapper {
  width: 400px;
  height: 400px;
  border: 1px solid black;
  div{
    img{
      width: 50px;
      height: 50px;
    }
  }
}

运行效果:
在这里插入图片描述

	可以看得见,设置图像宽高为50px,但是父div被撑大为53px,如果进行垂直剧中布局忽略这3像素,
那产生的效果就不理想

解决方法:

1.设置父元素font-size:0(不推荐)
2.改变图片的display:block
3.给img图片标签添加属性vertical-align:top;(不是baseline即可)

图片居中办法:line-height和vertical-align: middle, text-align: center;

方法1.
 div{
    height: 100px;
    line-height: 100px;
    text-align: center;
    img{
      width: 50px;
      height: 50px;
      vertical-align: middle;
    }
  }
方法2.不过只能是一个图片,否则只能第一个图片居中(也可以换成 margin -25px 0px 0px -25px)不过要计算偏移距离,不如translate方便
img{
	position: relative;
	left: 50%;
	top: 50%;
	transform: translate(-50%,-50%);
}

3.UI库的样式穿透

	平时开发用到的UI库组件,但是有时候它们给定的样式是不能满足我们的需要,所以就要用到样式穿透改变
UI组件的默认样式

用法:

外层容器 >>> 组件 { }
外层容器 /deep/ 组件 { }
外层容器 ::v-deep 组件 { }

目前前两个都有失效的体验,最后一个推荐使用,用过多个组件库都没翻车

4.flex布局,元素缩放

有时看到父元素宽度不够时,子元素回进行等比例缩放,解决方法:

1.不对父元素设置宽度,随子元素撑开
2.给所有的子元素设置flex-shrink:0;

5.各个地方引入图片和样式

HTML中:<img src="../../assets/image/company/delte.png">
JS:{image: require("../../assets/image/company/account.png")}
CSS:@import "../../assets/css/service.scss";
也有@写法,@是指src路径,可在webpack设定,css要"~@"这样写。

6.判断对象相似

因为对象是引用类型,除非是指针指向同一地址,否则是不会相等的,我们可以利用JSON格式化对象,再进行对比
JSON.stringify(e) !== JSON.stringify(val);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值