代码之家  ›  专栏  ›  技术社区  ›  Martin

css三中心柱

  •  0
  • Martin  · 技术社区  · 4 年前

    我试图使用引导、css和html来制作一个响应式网页,该网页有三列。左边是文本框,中间是按钮,右边是表格。

    我一直在努力完成这三个单独的尝试:(要查看第一次尝试的代码,请打开jsfidle和ctrl+f: <!-- output box 0 --> )

    https://jsfiddle.net/martinradio/adqLpxn5/57/

    enter image description here

    我最热衷于修复尝试1,因为它在将页面调整到非常薄时具有最佳的响应性

    • 尝试1 方法基于 this 示例代码中,框可以工作,但完全居中,我一直在尝试更改中间“复制”框的宽度,如果我能在保持响应性和外框宽度的同时使中间框变小,它就会工作。我尝试将中间框的样式设置为宽度为10%,但一直没有成功。

    • 尝试2 原始引导列和行分隔符,一行和三列,左框很容易设置宽度:40,但我无法成功设置中间复制按钮的样式。

    • 尝试3 我的原始代码,树框是我想要的框的完成版本,但我无法让它对样式做出响应。

    这三次尝试都是我试图理解和完成一个css任务: 创建一个包含三列的响应行:col1宽度为45%,col2宽度为10%,col3宽度为45%

    0 回复  |  直到 4 年前
        1
  •  0
  •   marc_s    4 年前

    我没有时间看你的所有尝试,所以我专注于尝试2。

    这就是为什么考虑到3列并排的要求是行不通的:

    • 第1栏 textarea 很好(虽然你不需要设置 cols="2" 因为你已经在设置它的宽度了)。文本区域具有浏览器的默认值 display:inline 但由于某种魔力,它的行为就像 display:inline-block 考虑到其宽度。
    • 第2栏 button 也很好(它有 显示:内联块 感谢bootstrap)
    • 第3栏 div 具有默认提供的浏览器 display:block 。所以它不能在第2列的右侧。你需要设置 display: inline-block 。它也有 width: 200% 但你的要求是45%,所以需要相应地设置。

    内联和;HTML源代码中的空白问题

    如上所述修复列3后,您会注意到这些列仍然不是并排的。相反,即使它们的宽度百分比加起来为100%,第3列仍将保持独立。

    这是为什么?

    原因是HTML中列之间的空白 来源 在块上下文(包含div给出)中,任何数量的空格>内联标记之间的0(包括新行)将使浏览器添加一个“空格”。

    例子:

    <div>
       <div style="display:inline-block">[one]</div>
       <div style="display:inline-block">[two]</div>
    </div>
    

    …结果为:

    [one] [two]
         ^
         note the space in between
    

    …因为,新行和结束标签之间的三个空格 div (one) 以及开始标签 div (two) ,HTML源代码中的两个内联块元素之间有一堆空格。

    如何解决这个问题?

    两种方式:

    1. 显而易见的一点是:删除HTML源代码中元素之间的空格。
      也就是说,将每一列的开始标签放在前一列的结束标签之后。
    2. 设置 font-size: 0 在容器元素和集合中 font-size: <some-size> 对于每一列。
      这将使列之间的“空间”宽度为0。