当前位置: 首页 > 面试题库 >

兼容Square Divs跨浏览器兼容

葛昕
2023-03-14
问题内容

我的页面宽50/50。左半部分具有六个div的行。条件:

  • 6个正方形必须始终保持正方形。
  • 前5个正方形应在右边留有边距/填充以进行分隔。
  • 所有六个正方形必须保持同一行。如果我可以使它正常工作,那么我可以对较小的视口中的响应度进行必要的调整。
  • 跨浏览器兼容最新版本的chrome和firefox。








    L1






    L2






    L3






    L4






    L5






    L6






    <div class="column" style="margin-left: 20px; border: 1px black solid; height: 500px">
    
        Other stuff
    



问题答案:

The main trick here is to make the div a square.

Normally one set a width, the height to 0 and a padding that equals to
the width

.square {

  height: 0;

  width: 33%;

  padding-bottom: 33%;

  background: lightgray;

}


<div class="square">

  <div>

    Content

  </div>

</div>

现在,当我们html" target="_blank">添加时display:flex,我们不能使用padding百分比(Firefox错误),并且由于我们使用,所以我们也不能将高度与百分比一起使用height: 0

为了克服这些问题,何时可以使用视口单位vw代替,与此同时我们也可以使用height而不是padding保持平方。

因此calc((100% / 6) - 10px);,我们没有使用这样的视口单位设置像这样的宽度,而是使用约10像素宽的装订线平均分布6个项目,而是使用视口单位calc(( (50vw - 65px) / 6) - 10px);

的50vw是浏览器宽度的一半,则65px是的总和container的左/右填充,50px加上15px所述沟槽之间columns。

这也使我们可以跳过多余的flex-item-inner元素,跳过position: absolutecontent元素上的使用,并且由于我们没有在上使用百分比作为高度,因此flex-item我们可以这样做来使内容居中

.flex-item-content {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

最终结果是这样

堆栈片段

.container {

  display: flex;

  flex-wrap: wrap;

  justify-content: space-between;

  padding: 25px;

  border: 2px red solid;

}

.column {

  flex-basis: calc(50% - 15px);

}

.flex-container {

  display: flex;

  flex-wrap: wrap;

  justify-content: space-between;

}

.flex-item {

  position: relative;

  flex-basis: calc(( (50vw - 65px) / 6) - 10px);

  height: calc(( (50vw - 65px) / 6) - 10px);

  background: white;

  border: 1px solid red;

  overflow: hidden;

}

.flex-item-content {

  height: 100%;

  display: flex;

  justify-content: center;

  align-items: center;

}

.flex-item:last-child .flex-item-content {

  color: green;

}



.column .other {

  padding: 15px;

  border: 1px solid black;

  padding-bottom: 35px;

}

.column.left .other {

  margin-top: 10px;

}

.column.right .other:nth-child(n+2) {

  margin-top: 10px;

}



@media (max-width: 768px) {

  .flex-item {

    flex-basis: calc(( (50vw - 65px) / 3) - 10px);

    height: calc(( (50vw - 65px) / 3) - 10px);

  }

  .flex-item:nth-child(n+4)  {

    margin-top: 12px;

  }

}

@media (max-width: 480px) {

  .flex-item {

    flex-basis: calc(( (50vw - 65px) / 2) - 10px);

    height: calc(( (50vw - 65px) / 2) - 10px);

  }

  .flex-item:nth-child(n+3)  {

    margin-top: 15px;

  }

}


<div class="container">

  <div class="column left">

    <div class="flex-container">

      <div class="flex-item">

          <div class="flex-item-content">

            L1

          </div>

      </div>

      <div class="flex-item">

          <div class="flex-item-content">

            L2

          </div>

      </div>

      <div class="flex-item">

          <div class="flex-item-content">

            L3

          </div>

      </div>

      <div class="flex-item">

          <div class="flex-item-content">

            L4

          </div>

      </div>

      <div class="flex-item">

          <div class="flex-item-content">

            L5<br>L5

          </div>

      </div>

      <div class="flex-item">

          <div class="flex-item-content">

            L6

          </div>

      </div>

    </div>



    <div class="other">

      Other stuff - left

    </div>



  </div>

  <div class="column right">

    <div class="other">

      Other stuff - right

    </div>



    <div class="other">

      Other stuff - right

    </div>

  </div>

</div>


 类似资料:
  • 浏览器兼容 主流浏览器都兼容 HTML5 的新标签,对于 IE8 及以下版本不认识 HTML5的新元素,可以使用 JavaScript 创建一个没用的元素来解决,例如: <script> document.createElement("header"); </script> 也可以使用 shiv 来解决兼容性问题,详情可参考 HTML5 Shiv

  • 问题内容: 我已经阅读了许多关于此的文章,但没有一个有任何明确的答案。这是我的代码: 现在,setAttribute()方法(带有mozilla注释)在mozilla中可以正常工作,但前提是该方法位于其上方的行之后。因此,换句话说,它似乎默认为最后设置的那个。.onclick方法(带有ie注释)在两种情况下均不起作用,我使用不正确吗? 无论哪种方式,我都找不到在IE中完全实现此功能的方式,更不用说

  • 本文向大家介绍bootstrap3 兼容IE8浏览器!,包括了bootstrap3 兼容IE8浏览器!的使用技巧和注意事项,需要的朋友参考一下       近期在使用bootstrap这个优秀的前端框架,这个框架非常强大,框架里面有下拉菜单、按钮组、按钮下拉菜单、导航、导航条、面包屑、分页、排版、缩略图、警告对话框、进度条、媒体对象等,bootstrap都已经预先定义好了,当我们制作网页上,只需直

  • 概览 本章描述了IE在处理自定义的HTML属性和标签时的一些独特之处。如果你要让你的AngularJS应用兼容IE8和IE8以下的版本的话,你需要仔阅读本章。 简易版 要让你的AngularJS应用在IE中正常运行你必须: 确保JSON字符串能被正常解析(IE7需要),你可以使用JSON2或者JSON3来实现。 你不能使用自定义的元素标签,如<ng:view>(你只能使用属性的形式,如<div n

  • 我们在div里放一个img,发现: 在html和html5中,div的长宽是不同的,后者的高度要超过几个像素。 比如说,下面这个是html的。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css">

  • 在一个模块中使用了 node 的 Events 和 Path 模块,现在希望模块能够同时在 node 中和浏览器中使用,有什么类似的模块可以兼容这两个环境,最好 api 的实现上和 node 模块大致一样。