《解构风格绘制皮卡丘》技术总结

142 阅读3分钟

实现思路

  • 在绘制动态风格之前,需要先单独创建一个文件让皮卡丘能正常被绘制,主要用到的是html代码和css代码
  • 绘制动态风格时,需要用到定时器定时器让绘制过程是可以动态展示的。
    • 将CSS代码预设为字符串1,然后创建一个新的字符串2,把字符串1的每一个字一点点切下来放进字符串2
  • 为了代码层可以自动滚动,以及保持样式美观,需要隐藏scrollbar,并且要用js去控制让scrollTop始终拉到底

遇到的难点

  • 其中用到了dom操作元素的文本内容,即innerHTML与innerText,因此我们需要对innerHTML与innerText有深入了解
    • 不然会出现,屏幕上动态显示的文本信息与源css代码的版式差异,比如没有空格和换行

innerHTML VS innerText

  // 文本中的空格和转义符号都会被浏览器读到,但是具体如何展示的,这是听浏览器的,
  // 浏览器会把html页面中多个手打的空格都给整理成1个

  // 浏览器读到你这个是innerText字符串时,如果字符串里有tag
  // 不会帮你把tag解析出来,会把多个手打的空格都给整理成1个
  // 但是浏览器会帮你保留innerText字符串中的换行,你有多个换行它就展示多个换行,

  // 浏览器读到你这个是innerHTML字符串时,会帮你把tag解析出来,也会把转义字符正确打印,
  // 有多少个 就会生效多少个空格,但依旧会把多个手打的空格都给整理成1个
  // 如果innerHTML中出现一个换行符号,则展示为一个空格,
  // 如果innerHTML中出现多个换行符号,则展示为一个空格

技术总结

css reset 伪元素

  • 伪元素请单独reset 不要和 * 混在一起
  • 最好不要::before ::after混在一起一并reset

border-radius学得好可以绘制很多弧状图形

定位技巧不像公式那样死板

  • 通常我们背的是父元素相对定位,子元素绝对定位,太死板了
  • 只需要记住两点 relative是自己相较于父元素位置的偏差~
  • 若要给子元素设置absolute,则父元素既可以是relative也可以是absolute

如何用div+border绘制三角形,梯形

元素与屏幕中线居中对齐的两种方式

  • 定位+left50%+translateX(-50%)
  • 定位+left50%+负的margin-left
    • 如果你要调整位置,就自己修改translateX与margin-left的值就行了

transform 的坑点是会用后面新的将前面旧的全部替换掉,而margin-left则需要去计算div的宽度了,复杂情况很容易算错的

伪元素可以实现图形中再套一个图形

  • 当然不用伪元素也是完全没问题的
.eye::before {
  /*伪元素默认是内连元素,要宽高就要设置block*/
  content: "";
  display: block;
}

overflow:hidden

  • 层级结构发杂的情况下,z-index不方便设置/设置无效时,可以试试在父元素设置overflow:hidden