如何将所有css-grid(或flex)元素设置为相同大小?

小玩意

我正在尝试为我的Web应用程序创建一个新的RTF编辑器(学生预算),并且在尝试将所有按钮设置为相同大小时,除网格/弹性布局外,其他所有东西都可以正常工作。

是当前编辑器的外观。请注意最后一个图标比其他图标大得多吗?

除了这个问题外,该行中的按钮数量未知,因为我正在构建的API可以定义此编辑器将具有的属性

从网络上的多个位置搜索之后,我发现的所有结果都给了我与现有CSS相同的结果。这是我尝试过的第一个外部来源尝试flexbox会产生相似的结果

如果以下代码缺少某些内容,或者您​​想直接尝试清理后的标记,请访问jsfiddle

来自javascript的HTML输出,css标记将对其进行修改

<ttace data-empty="Type something to create a post" class="TTACEEditor">
  <div class="ttace controls">
    <div>
        <div>
            <button title="Bold"><span class="ttace icon bold"></span></button>
            <button title="Italic"><span class="ttace icon italic"></span></button>
            <button title="Strike through"><span class="ttace icon strike-through"></span></button>
            <button title="Underline"><span class="ttace icon underline"></span></button>
            <button title="Insert horizontal rule"><span class="ttace icon hr"></span></button></div>
        <div>
            <button title="Align left"><span class="ttace icon justify-left"></span></button>
            <button title="Align center"><span class="ttace icon justify-center"></span></button>
            <button title="Align right"><span class="ttace icon justify-right"></span></button>
            <button title="Align full"><span class="ttace icon justify-full"></span></button></div>
        <div>
            <button title="Ordered list"><span class="ttace icon ordered-list"></span></button>
            <button title="Unordered list"><span class="ttace icon unordered-list"></span></button>
            <button title="Outdent"><span class="ttace icon indent-left"></span></button>
            <button title="Indent"><span class="ttace icon indent-right"></span></button></div>
        <div>
            <button title="Clear formatting"><span class="ttace icon clear-formatting"></span></button>
        </div>
    </div>
  </div>
  <div class="ttace textarea" contenteditable="true" data-empty="Type something to create a post"></div>
</ttace>

这是使用css-grid作为布局模板的代码

.TTACEEditor>.ttace.controls {
    margin: 0;
    padding: 0;
    display: flex;
}

.TTACEEditor>.ttace.controls>div {
    margin: 0 auto;
    padding: 0;
    display: inline-grid;
    grid-auto-flow: column;
    width: 100%;
}

.TTACEEditor>.ttace.controls>div>div {
    display: inline-grid;
    grid-template-rows: auto;
    grid-template-columns: auto;
    grid-auto-flow: column;
}

.TTACEEditor>.ttace.controls>div div button {
    margin: 0 auto;
    display: inline-block;
    height: 100%;
    width: 100%;
    text-align: center;
}

.icon {
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
}

这是使用flex,但是输出与上面的标记非常相似,但存在相同的问题

.TTACEEditor>.ttace.controls {
    margin: 0;
    padding: 0;
    display: flex;
}

.TTACEEditor>.ttace.controls>div {
    margin: 0 auto;
    padding: 0;
    display: flex;
    flex-direction: row;
    width: 100%;
}

.TTACEEditor>.ttace.controls>div>div {
    display: inline-flex;
    flex-grow: 1;
    grid-auto-flow: column;
}

.TTACEEditor>.ttace.controls>div div button {
    color: black;
    margin: 0 auto;
    display: inline-block;
    flex-grow: 1;
    height: 100%;
    background-color: transparent;
    cursor: pointer;
    width: 100%;
    text-align: center;
}

.icon {
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;
    width: 1.2em;
    height: 1.2em;
}
皮特·维乔斯基(Piotr Wicijowski)

首先,由于当前没有浏览器支持拟议的css subgrid规范,所以我建议不要尝试使嵌套网格中的项目均等分布。

其次,是否将图标分组为多个部分(创建嵌套的html结构),从而导致“包含多个网格的网格”的硬性要求?如果没有,我强烈建议使用一种扁平的结构,因为这样可以使布局可以访问所有按钮并将它们的大小均等。

最后,据我了解,您的按钮只能是一行,因此使用grid布局并不十分合适,因为它主要针对2d布局,在您的情况下,一个好的olflex也将做同样的事情(并且会有一个更好地支持更广泛的浏览器)。

考虑到所有这些,我已经修改了您的代码,可以在此小提琴中找到所做的更改

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将向量中的一组元素与矩阵相乘,将所有其他元素设置为零

XQuery | 如何将所有属性转换为元素

如何将熊猫数据框中的字符串设置为所有行中的相同位置?

如何将所有后代节点和链接设置为与2级祖先相同的颜色?

如何将所有HTML元素放入单个msgbox

如何将入站到“所有流量”的所有安全组设置为0.0.0.0

如何将滚动视图的大小设置为与视图相同的大小

如何将所有元素滚动到目标元素

如何将列表中的所有元素相互比较?

如何将双打列表中的所有元素相乘?

如何将页脚设置为所有网站中的最后一个元素

如何将<td>设置为与<img>相同的大小

如何将AND应用于列表的所有元素?

如何将元素的所有内容与XSLT匹配?

如何均匀对齐页面的div元素并将div设置为相同大小?

如何将所有幻灯片中的所有文本设置为相同的字体?

R:如何将向量的所有元素除以所有其他元素的总和

如何将CSS高度设置应用于所有子元素?

如何将td的所有同级元素放入数组

在MATLAB中如何将除第3个元素之外的所有元素都设置为0?

将 flex 元素的子元素设置为父元素的高度?

无论原始图片的大小如何,如何将帖子的WordPress Feature图片设置为相同的大小?

如何将css属性设置为元素而不是innerhtml

CSS Grid:如何将所有内容放在一行中?

如何将一个 div flex 元素的高度设置为与另一个相同?

如何将输入颜色设置为与视频大小相同的大小?

如何将所有值类型视为相同

无论R中有多少,如何将图中的所有因素设置为相同的颜色?

如何将 AVX ymm 寄存器中的所有值设置为相同(均为 0/1/特定值)?