使内联块在溢出时缩小到内容

2024-06-28

I have an inline-block container, with several other inline-block elements like so: As working

The container is the blue background, the red the elements. Everything is working fine until there's too many elements and the inline-block has to expand: As not working

The inline-block container expands to the entire width of the body, but I want it to shrink to the width of it's contents. Is this possible with pure CSS? Kinda like this: As I want it to work

JSFiddle http://jsfiddle.net/eRHnp/

        #container {
            background: blue;
            display: inline-block;
        }

        .box {
            background: red;
            display: inline-block;
            width: 100px;
            height: 100px;
        }

哦,容器不能是固定宽度:(


我相信你正在寻找的东西像这样 http://jsfiddle.net/Zeaklous/yXxD6/48/,仅当另一个盒子可以容纳/不容纳(具体取决于窗口大小)时,才会调整容器的大小。据我所知,这个功能目前在纯 CSS 中是不可能的,因为 CSS 无法根据动态内容分段缩小(框的整个宽度)

The CSS

#container {
    background:blue;
    text-align: left;
    font-size:0;
    display: inline-block;
    padding-left:5px;
    padding-bottom:5px;
    /* for ie6/7: */
    *display: inline;
    zoom:1;
}
.box {
    display:inline-block;
    background:red;
    height:50px;
    margin-top:5px;
    margin-right:5px;
    width: 100px;
    height: 100px;
}

和纯javascript

var boxAmount = 0;
var newWidth = 0;
setNewWidth();

window.onresize = function () {
    setNewWidth();
};

function setNewWidth() {
    var outerContainer = document.getElementsByTagName('body')[0];
    var outerWidth = outerContainer.offsetWidth;
    var box = document.getElementsByClassName('box');
    var boxWidth = box[0].offsetWidth;
    var innerContainer = document.getElementById('container');
    var containerPadding = parseInt(window.getComputedStyle(innerContainer, null).getPropertyValue('padding-left'), 10) 
    +  parseInt(window.getComputedStyle(innerContainer, null).getPropertyValue('padding-right'), 10);

    boxAmount = (outerWidth - containerPadding) / (boxWidth + containerPadding);
    boxAmount = Math.floor(boxAmount);
    if (boxAmount <= box.length) {
        newWidth = boxAmount * boxWidth + boxAmount * 5;
    }
    innerContainer.style.width = newWidth + 'px';
}

如果盒子周围有另一个容器,这是一个版本 http://jsfiddle.net/Zeaklous/yXxD6/50/

这是一个 jQuery 版本 http://jsfiddle.net/Zeaklous/yXxD6/49/对于那些有兴趣的人

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使内联块在溢出时缩小到内容 的相关文章

  • Jquery,当屏幕宽度为1050px时删除类

    这是我正在使用的JS代码 document ready function var nav menu2 window scroll function if this scrollTop gt 90 nav addClass f nav els
  • 如何将-webkit-gradient应用到IE上?

    我有以下 CSS 代码 webkit gradient linear left bottom left top from 5AE to 036 Chrome 中的背景显示效果非常好 Internet Explorer 仅显示白色背景 我尝试
  • 如何使用角度在垫选择嵌套值中包含过滤器

    我正在使用带有嵌套下拉菜单的有角材料 下拉值以父级和子级为基础嵌套 我面临两个问题 自动建议不起作用 如果我输入父名称或其关联的子名称 则必须以展开模式过滤并显示特定的父视图 如果我展开第一个父视图并尝试展开第二个父视图 则第一个父视图应在
  • HTML5 Canvas - 在画布上绘图、保存上下文并稍后恢复

    要求 现在 在画布上绘制 然后点击 保存 存储画布状态 离线绘制 但不作为图像 稍后 打开画布并显示之前保存的绘图 然后继续再次绘制 对于绘图 我们通常使用如下代码 canvas document getElementById can ct
  • 使用 div 代替 table 进行布局

    我想知道什么方法最好将表格布局替换为 div 我自己也尝试过一些 但它让我的 4x4 div 非常混乱 我猜当有经验做这样的事情时 这并不是很难完成 但我对 div 都是新手 并试图学习这一点 看看这个并分享您对表格是否应该保持原样或者是否
  • 范围滑块 javascript 以小时和分钟为单位

    我试图分别以小时和分钟为单位显示滑块的值 我对 JS 还很陌生 并且仍在尝试了解它是如何工作的 到目前为止 我所拥有的是一个工作滑块 其最大值为 1440 24 小时内的分钟 在 JS 中 我尝试将其划分为小时和分钟 并使用 innerHt
  • Chrome - 儿童剪辑CSS3圆形边框?

    请参阅以下 JSFiddle http jsfiddle net zScKW http jsfiddle net zScKW 请注意 子 div 剪裁了其父 div 的边框 如果我删除边框 但保留圆角 该项目将按照我们的预期进行剪辑 Fir
  • 我如何在ajax应用程序中找到未使用的css?

    我一直在搜索 但找不到任何 ff 插件或 javascript 来查找 ajax 应用程序中未使用的 css 除尘选择器 http www sitepoint com dustmeselectors 可以进行网站抓取 但我正在寻找检查加载内
  • 可以在 iPad 上自动播放 HTML5 视频吗?

    The
  • 是否可以隐藏 HTML 文本区域元素上的滚动条?

    是否可以使用 CSS 或任何其他方式隐藏 HTML 文本区域元素上的滚动条 style overflow hidden 但不确定你为什么要这样做
  • 如何使用jQuery加载跨域html

    我有 2 个不同的 java web 项目在 2 个不同的 tomcat 服务器上运行 假设 projA 和 projB 在这里 我尝试从 projA 加载 projB 中可用的 html 我只是使用 jQuery load 来实现这一点
  • 网页CSS覆盖ckeditor 3样式

    我有一个加载 screen css 的页面 其中包含evil规则 由于各种原因我无法删除或修改 a background red important I use CK编辑器3 x http ckeditor com 在同一页面上 问题是 无
  • HTML 电子邮件中的边距有什么替代方案?

    Hotmail 不支持 HTML 电子邮件中的边距 还有其他选择吗 我建议使用表格并调整列的宽度 HTML 电子邮件有时搭配表格效果更好 此外 您还可以查看收件箱中的一封电子邮件 该电子邮件可以执行您想要的操作并检查源代码 由于这个答案似乎
  • 我们可以为 border-bottom 属性设置渐变颜色吗? [复制]

    这个问题在这里已经有答案了 我们可以添加渐变颜色吗border bottomhtml块元素的属性 边框应该与此类似 谁能告诉我这在 CSS3 中是可能的吗 我像这样尝试过 但无法让它工作 border gradient border bot
  • onclick链接/按钮获取数据属性值

    span class btn btn block btn inverse btn icon glyphicons home i i Daily span span class btn btn block btn inverse btn ic
  • Twitter Bootstrap:按钮下拉列表中的图标

    Here http jsfiddle net DjHyQ 是 jsfiddle 上的链接 其中包含一些演示 它在 Chrome 甚至 IE 中运行良好 但在 FF 中图标会下降 我怎样才能解决这个问题而不用负边距或类似的东西来提升它们 我不
  • 检测滚动到 DIV 底部

    我想检测我是否到达了 div 的底部 我的 div 高度为 400px 溢出隐藏 我不知道正常高度但超过400px 我正在使用这段代码 但它不起作用 任何想法 if article txt scrollTop article txt hei
  • 如何在JavaFX中获得狭窄的进度条?

    正如标题所说 我需要制作一个细进度条 我用过这个 progressBar setMaxHeight 0 1 progressBar setPrefHeight 0 1 但这行不通 有人有想法吗 你必须搞乱样式才能让它变小 我真的建议看看ca
  • 与基线和文本区域垂直对齐

    我试图让标签与文本区域中第一行文本的基线对齐 天真的尝试 div style display inline block div
  • 如何防止外部 CSS 添加和覆盖 ReactJS 组件样式

    我有一个自定义的 ReactJS 组件 我想以某种方式设置样式 并将其作为插件提供给许多不同的网站 但是 当网站使用全局样式 Twitter bootstrap 或其他 css 框架 时 它会添加并覆盖我的组件的样式 例如 全局 css l

随机推荐