1️⃣ 利用 css 的 伪元素::after + transfrom 进行缩放

为什么用伪元素? 因为伪元素::after::before是独立于当前元素,可以单独对其缩放而不影响元素本身的缩放
伪元素大多数浏览器默认单引号也可以使用,和伪类一样形式,而且单引号兼容性(ie)更好些

  1. // 当某个元素需要设置 1px 的边框时为元素设置相对定位并且添加指定的类名即可
  2. <!-- 全部边框 -->
  3. .border-1px:after {
  4. content: '';
  5. position: absolute;
  6. top: 0;
  7. left: 0;
  8. box-sizing: border-box;
  9. width: 100%;
  10. height: 100%;
  11. border: 1px solid #000;
  12. -webkit-transform: scale(0.5);
  13. transform: scale(0.5);
  14. -webkit-transform-origin: top left;
  15. }
  16. <!-- 单边框,以上边框为例 -->
  17. .border-1px-top:after {
  18. content: "";
  19. position: absolute;
  20. top: 0;
  21. left: 0;
  22. right: 0;
  23. border-top: 1px solid red;
  24. transform: scaleY(0.5);
  25. transform-origin: left top;
  26. }
  27. // 在高清屏幕下设置
  28. @media screen and (-webkit-min-device-pixel-ratio: 2){
  29. .border-1px-top:after{
  30. transform:scaleY(0.5); // 2倍屏 伪元边框缩小为一半
  31. }
  32. }
  33. @media screen and (-webkit-min-device-pixel-ratio: 3){
  34. .border-1px-top:after{
  35. transform:scaleY(0.33333); // 3倍屏 伪元边框缩小为三分之一
  36. }
  37. }