javascript - 防止容器 div 在缩小时将最后一个内容 div 移动到下一行

标签 javascript jquery html

我有这个蛾日历,每月有 1- (28-31) 个区 block ,具体取决于月份。开头有 6 个“选项” block ,根据月份开始的星期几显示或隐藏,因此,如果该月从星期一开始,则所有 block 都会隐藏,如果是星期日,则显示所有这些 block 。问题是当页面缩小到 75% 或更低时,“星期日” block 会向下移动一行。如果你看到这个jsfiddle缩小到 75% 你就会明白我的意思了。这是我的CSS。谢谢。

.container{ width:58ex; 
            border:1px solid black;
            position:absolute;
          }

.date{  width:8ex; 
        height:8ex;
        border: 1px solid blue;
        float:left;
       }

  .day{ width:8ex;
        height:4ex;
        border: 1px solid grey;
        float:left; 
        background-color:grey;
       }

.option{ width:8ex;
        height:8ex;
        border: 1px solid white;
        float:left;
      }

最佳答案

您可以通过在 CSS 中进行以下更改来实现所需的效果:

.container {
     width:56ex;   // <-- instead of 58ex
     ...

.container > * { box-sizing: border-box; }

另请参阅此 short demo (基于您提供的代码)。

重要:
Set Sail Media善意提醒我,该技术在 IE 版本 7 及更早版本中支持。请参阅here 了解更多详情。

简短说明:
问题原因:
.container div 的宽度为“58ex”。每个 .day div 的宽度为“8ex”,每边边框为“1px”;总共“8ex + 2px”。我们必须将 7 个 .day div 放入 .container 的 58ex 中,即:

7 * (8ex + 2px) = 56ex + 14px must fit in 58ex <=>
14px must fit in 2ex

由于“px”是静态单位,但“ex”会动态变化(基于字体大小,而字体大小又取决于缩放系数)。不可避免地,我们会遇到 14px > 1ex 的情况,因此最后一个 div 不适合该行,必须折叠到新行上。

resque 的“border-box”:
引用 MDN,您使用 box-sizing:border-box 实现的是:
“宽度和高度属性包括填充边框,但不包括边距。” (强调我的)
因此,您基本上告诉浏览器,您希望 .day div 的宽度为 8ex,包括内容、填充边框。您可以阅读更多相关信息here

关于javascript - 防止容器 div 在缩小时将最后一个内容 div 移动到下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16677454/

相关文章:

javascript - 使用 $.ajax 方法将变量从 javascript 传递到 php,以便在数据库 mySQL 中发布

css - jquery 获取 div 的媒体查询宽度值(而不是我的 css 正常值)并在函数中使用它

javascript - 使用jquery显示和隐藏产品li

javascript - 如何自动格式化文本框输入

javascript - 带有 JQuery 数据表的 Core 2 MVC

javascript - Redux 存储在 React 类组件中返回 null 值

javascript - jQuery/JavaScript - Firefox 上的 event.target.id

jquery - 如何在激活时更改导航项颜色?

html - 使页脚被内容推离页面,但在不是整页内容时留在底部

html - 如果空间不够,li 文本会自动居中