flexible.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* eslint-disable no-redeclare */
  2. (function flexible (window, document) {
  3. var docEl = document.documentElement
  4. var dpr = window.devicePixelRatio || 1
  5. // adjust body font size
  6. function setBodyFontSize () {
  7. if (document.body) {
  8. document.body.style.fontSize = (12 * dpr) + 'px'
  9. } else {
  10. document.addEventListener('DOMContentLoaded', setBodyFontSize)
  11. }
  12. }
  13. setBodyFontSize()
  14. // set 1rem = viewWidth / 10
  15. function setRemUnit () {
  16. // var rem = docEl.clientWidth / 10
  17. // docEl.style.fontSize = rem + 'px'
  18. if (docEl.clientWidth > 1100) {
  19. var rem = docEl.clientWidth / 10
  20. } else {
  21. var rem = 1100 / 10
  22. }
  23. // console.log('docEl.clientWidth', docEl.clientWidth, 'rem', rem);
  24. docEl.style.fontSize = rem + 'px'
  25. }
  26. setRemUnit()
  27. // reset rem unit on page resize
  28. window.addEventListener('resize', setRemUnit)
  29. window.addEventListener('pageshow', function (e) {
  30. if (e.persisted) {
  31. setRemUnit()
  32. }
  33. })
  34. // detect 0.5px supports
  35. if (dpr >= 2) {
  36. var fakeBody = document.createElement('body')
  37. var testElement = document.createElement('div')
  38. testElement.style.border = '.5px solid transparent'
  39. fakeBody.appendChild(testElement)
  40. docEl.appendChild(fakeBody)
  41. if (testElement.offsetHeight === 1) {
  42. docEl.classList.add('hairlines')
  43. }
  44. docEl.removeChild(fakeBody)
  45. }
  46. }(window, document))