当前位置:   article > 正文

css面试题---场景应用

css面试题---场景应用

1、实现一个三角形

        css一般用border属性实现三角形。

 

  1. div {
  2. width: 0;
  3. height: 0;
  4. border: 100px solid;
  5. border-color: orange blue red green;
  6. }
  1. // 三角形一
  2. div {
  3. width: 0;
  4. height: 0;
  5. border-top: 50px solid red;
  6. border-right: 50px solid transparent;
  7. border-left: 50px solid transparent;
  8. }
  9. // 三角形二
  10. div {
  11. width: 0;
  12. height: 0;
  13. border-bottom: 50px solid red;
  14. border-right: 50px solid transparent;
  15. border-left: 50px solid transparent;
  16. }
  17. // 三角形三
  18. div {
  19. width: 0;
  20. height: 0;
  21. border-left: 50px solid red;
  22. border-top: 50px solid transparent;
  23. border-bottom: 50px solid transparent;
  24. }
  25. // 三角形四
  26. div {
  27. width: 0;
  28. height: 0;
  29. border-right: 50px solid red;
  30. border-top: 50px solid transparent;
  31. border-bottom: 50px solid transparent;
  32. }
  33. // 三角形五
  34. div {
  35. width: 0;
  36. height: 0;
  37. border-top: 100px solid red;
  38. border-right: 100px solid transparent;
  39. }

 

 2、实现一个扇形

        在三角形的基础上加上border即可。 

  1. div{
  2. border: 100px solid transparent;
  3. width: 0;
  4. heigt: 0;
  5. border-radius: 100px;
  6. border-top-color: red;
  7. }

 

3、实现一个宽高自适应的正方形

  1. // 方案一:利用vw来实现
  2. .square {
  3. width: 10%;
  4. height: 10vw;
  5. background: tomato;
  6. }
  7. // 方案二:利用元素的margin/padding百分比是相对父元素width的性质来实现
  8. .square {
  9. width: 20%;
  10. height: 0;
  11. padding-top: 20%;
  12. background: orange;
  13. }
  14. // 方案三:利用子元素的margin-top的值来实现
  15. .square {
  16. width: 30%;
  17. overflow: hidden;
  18. background: yellow;
  19. }
  20. .square::after {
  21. content: '';
  22. display: block;
  23. margin-top: 100%;
  24. }

4、画一条0.5px的线 

  1. // 方案一:采用transform: scale()的方式
  2. transform: scale(0.5,0.5);
  3. // 方案二:采用meta viewport的方式
  4. <meta name="viewport" content="width=device-width, initial-scale=0.5, minimum-scale=0.5, maximum-scale=0.5"/>

5、设置小于12px的字体

        使用css的transform缩放属性transform:scale(0.5);transform:scale(0.75);收缩的是整个元素的大小,这时候,如果是内联元素,必须将内联元素转换成块元素

        还可使用切图,将小字体以切图形式展示。

6、如何解决1px问题

        1px指的是在某些屏幕的机型上,移动端页面的1px会变得很粗,呈现出不止1px的效果。

        css的1px并不等同于移动设备上的1px,它们之间的比例关系:

window.devicePixelRatio = 设备的物理像素 / CSS像素

        解决思路1:直接写0.5px,利用设备渲染属性,会显示为1px

        解决思路2:利用伪元素,先放大,再缩小:在目标元素的后面追加一个 ::after 伪元素,让这个元素布局为 absolute 之后、整个伸展开铺在目标元素上,然后把它的宽和高都设置为目标元素的两倍,border值设为 1px。接着借助 CSS 动画特效中的放缩能力,把整个伪元素缩小为原来的 50%。此时,伪元素的宽高刚好可以和原有的目标元素对齐,而 border 也缩小为了 1px 的二分之一,间接地实现了 0.5px 的效果。

  1. #container[data-device="2"] {
  2. position: relative;
  3. }
  4. #container[data-device="2"]::after{
  5. position:absolute;
  6. top: 0;
  7. left: 0;
  8. width: 200%;
  9. height: 200%;
  10. content:"";
  11. transform: scale(0.5);
  12. transform-origin: left top;
  13. box-sizing: border-box;
  14. border: 1px solid #333;
  15. }
  16. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/434913
推荐阅读
相关标签
  

闽ICP备14008679号