经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTMLCSS » CSS » 查看文章
使用rem编写自适应屏幕网页造成div被span撑高的解决办法
来源:cnblogs  作者:追极  时间:2018/10/23 9:05:05  对本文有异议

原始代码:

  1. <html>
  2. <head>
  3. <meta charset="utf-8">
  4. <meta content="ie=edge" http-equiv="x-ua-compatible">
  5. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />
  6. </head>
  7. <style type="text/css">
  8. #content{
  9. width:7.2rem
  10. }
  11. .price-div{
  12. background-color:yellow;
  13. }
  14. .price-div span{
  15. background-color:green;
  16. }
  17. .price-unit{
  18. font-size:0.25rem;
  19. }
  20. .price-number{
  21. font-size:0.31rem;
  22. }
  23. </style>
  24. <body>
  25. <div id="content" style="float:left">
  26. <div class="price-div" >
  27. <span class="price-unit"></span>
  28. <span class="price-number">42</span>
  29. </div>
  30. </div>
  31.  
  32. <script type="text/javascript">
  33. //计算字体大小
  34. var calculateFontSize = function () {
  35. var BASE_FONT_SIZE = 100;
  36. var docEl = document.documentElement,
  37. clientWidth = docEl.clientWidth;
  38. if (!clientWidth) return;
  39. docEl.style.fontSize = BASE_FONT_SIZE * (clientWidth / 720) + 'px';
  40. };
  41. calculateFontSize();
  42. // Abort if browser does not support addEventListener
  43. if (document.addEventListener) {
  44. var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
  45. window.addEventListener(resizeEvt, calculateFontSize, false);
  46. document.addEventListener('DOMContentLoaded', calculateFontSize, false);
  47. }
  48. </script>
  49. </body>
  50. </html>

 

效果:

 

原因:

rem缩放,导致,去掉缩放的js代码就好了。但这个不是解决办法。

 

解决方法一:

div设置高度并采用相对定位,span采用绝对定位。

  1. <style type="text/css">
  2. #content{
  3. width:7.2rem
  4. }
  5. .price-div{
  6. background-color:yellow;
  7. height:0.4rem;
  8. line-height:0.4rem;
  9. position:relative;
  10. }
  11. .price-div span{
  12. background-color:green;
  13. }
  14. .price-unit{
  15. font-size:0.25rem;
  16. position:absolute;
  17. top:0rem;
  18. left:0.2rem;
  19. }
  20. .price-number{
  21. font-size:0.31rem;
  22. position:absolute;
  23. top:0rem;
  24. left:0.5rem;
  25. }
  26. </style>

效果:

 

解决方法二:

div设置高度,span等内联元素设置vertical-align为top。

  1. <style type="text/css">
  2. #content{
  3. width:7.2rem
  4. }
  5. .price-div{
  6. background-color:yellow;
  7. height:0.4rem;
  8. line-height:0.4rem;
  9. }
  10. .price-div span{
  11. background-color:green;
  12. }
  13. .price-unit{
  14. font-size:0.25rem;
  15. vertical-align:top;
  16. }
  17. .price-number{
  18. font-size:0.31rem;
  19. vertical-align:top;
  20. }
  21. </style>

效果:

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号