1013: 防水堤坝_当堤坝断裂时:网页溢出问题的解决方案

2023-11-17

1013: 防水堤坝

After unexpected gaps in pages, perhaps the most common layout problem is content overflow. Thankfully, there are just a few common causes of this problem, and some well-established solutions:

在页面出现意外间隔之后,最常见的布局问题可能是内容溢出。 值得庆幸的是,此问题只有一些常见原因,还有一些完善的解决方案:

溢出原因1:容器的高度已设置 (Overflow Cause 1: A Container with a Set Height)

The most common problem I see with my students is setting a height on container elements. For example:

我和学生一起看到的最常见的问题是在容器元素上设置高度 。 例如:

<aside>
<p>Now, cryin wont help you, prayin wont do you no good,<br>
When the levee breaks, mama, you got to move.
</aside>

And in the CSS:

在CSS中:

aside { 
    display: inline-block;
    border: 1px dotted #000;
    height: 10px;
}

Which produces:

产生:

Figure 1: Content overflow due to a set height
图1:由于设置高度导致内容溢出

The reason is fairly straightforward: by default, containers will automatically be the height of their content. By setting a default height on the element, you are subverting this rule. The other relevant rule is that browsers will always show content that overflows by default. Thus, you get the result shown in Figure 1.

原因很简单:默认情况下, 容器将自动成为其内容的高度 。 通过在元素上设置默认高度,您正在颠覆此规则。 另一个相关规则是, 浏览器将始终显示默认情况下溢出的内容 。 因此,您得到的结果如图1所示。

治疗: (Treatment:)

There are several possible solutions:

有几种可能的解决方案:

  1. Remove the height from the container’s CSS, and let the element find its own natural height from its content.

    从容器CSS中删除height ,然后让元素从其内容中找到其自身的自然高度。

  2. Remove the border (or background) from the element: no border, no visual overflow! *

    从元素中删除border (或background ):无边框,无视觉溢出! *

Setting overflow: scroll-y on the container is almost never a solution: having a scrolling window inside another scrolling window (the browser) is a recipe for user confusion and frustration).

设置overflow: scroll-y在容器上overflow: scroll-y几乎永远不是解决方案:在另一个滚动窗口(浏览器)中包含一个滚动窗口会导致用户感到困惑和沮丧。

溢出原因2:图像太宽 (Overflow Cause 2: A Too-Wide Image)

An image placed on a web page will appear at its natural width: for a bitmap, this means the image’s horizontal pixel count; for an SVG, the value of its predefined height and width attributes. This causes overflow in any element that is too small to contain it, as shown in Figure 2.

放置在网页上的图像将以其自然宽度显示:对于位图,这意味着图像的水平像素数; 对于SVG ,其预定义的heightwidth属性的值。 这会导致任何太小而无法容纳它的元素溢出,如图2所示。

Figure 2: An image overflowing its container horizontally
图2:图像水平溢出其容器

(Solution)

The solution is almost always the same: provide a percentage width for the image in CSS:

解决方案几乎总是相同的:在CSS中为图像提供百分比宽度:

img { width: 100%; }

This will make the image always fit its responsive parent.

这将使图像始终适合其响应父级。

You can find more information about these techniques in my Fluid Images and SVG Images articles; you should also consider picture and srcset for responsive bitmap images.

您可以在我的Fluid Images和SVG Images文章中找到有关这些技术的更多信息。 您还应该考虑将picturesrcset用于响应性位图图像。

溢出原因3:具有百分比宽度的容器 (Overflow Cause 3: A Container with Percentage Width)

A problem that is increasingly common in the age of responsive design: an element containing text is given a percentage width:

在响应式设计时代,这个问题越来越普遍:包含文本的元素具有一定的百分比宽度:

aside {
    width: 20%;
}
Figure 3: Text overflowing its container horizontally
图3:文本水平溢出其容器

This element will narrow with the viewport. Left untreated, longer words will eventually overflow the horizontal edge, as shown in Figure 3.

该元素将随着视口缩小。 如果不加以处理,较长的单词最终将溢出水平边缘,如图3所示。

(Images in this scenario will be taken care of by the solutions provided for Cause 2)

(此情况下的图像将由原因2提供的解决方案处理)

治疗方法 (Treatments)

There are three possible solutions:

有三种可能的解决方案:

  1. Place a min-width on the parent element, creating a lock at the lower viewport widths. However, that usually only takes you half-way.

    在父元素上放置一个min-width ,在较低的视口宽度上创建一个锁。 但是,这通常只需要您半途而废。

  2. Engage hyphenation in an @media query. This will only cure the problem for especially long text runs; eventually, you’ll need to go for option 3.

    @media查询中加入 连字符 。 这只能解决特别长的文本问题; 最终,您需要选择选项3。

  3. Change the layout to a vertical design, rather than side-by-side; I particularly like to use flexbox for this.

    将布局更改为垂直设计,而不是并排; 我特别喜欢为此使用flexbox

溢出原因4:不使用边框 (Overflow Cause 4: Not Using Border-Box)

By default, width in CSS is not what most people assume it is: padding is added to the width of content to produce an overall width, often causing overflow issues.

默认情况下,CSS的width 不是大多数人认为的那样:将padding 添加内容的宽度以产生整体宽度,通常会导致溢出问题。

(Solution)

Engage box-sizing: border-box for most or all elements by default. Doing this at the start of your site development is very important; otherwise, you’ll be building and measuring elements based on a series of incorrect assumptions, and will be forced to change them all later.

启用box-sizing: border-box默认情况下,大多数或所有元素的box-sizing: border-box 。 在网站开发开始时进行此操作非常重要; 否则,您将基于一系列不正确的假设来构建和衡量元素,并将被迫在以后全部更改它们。

溢出原因5:浮动元素 (Overflow Cause 5: Floated Elements)

Floated elements to not contribute to the height of their container. Taking the following as an example:

浮动元素不会增加其容器的高度。 以以下为例:

<div id="levee">
    <img src="chicago.jpg" alt="A photograph of the waterfront 
    of Chicago">
    <p>Thinkin bout me baby and my happy home<br>
    Going, gon to chicago,<br>
    Gon to chicago,<br>
    Sorry but I cant take you.<br>
    Going down, going down now, going down.
    
    <p>Photograph by 
    <a href="https://www.flickr.com/photos/snake_bill/13812951923/">
    Yulin Lu</a>, used under a Creative Coommons 
    Attribution-NonCommercial-NoDerivs 2.0 Generic license.
</div>

With this CSS:

使用此CSS:

#levee {
    border: 2px solid #333;
}
#levee img {
    float: left;
    width: 50%;
    margin: 2rem;
}

Produces what you see in Figure 4:

产生您在图4中看到的内容:

Figure 4: Floated content overflowing its container
图4:浮动内容溢出其容器

治疗 (Treatment)

There are many “clear floats” or “clearfix” solutions for this problem. The simplest solution is extremely effective, but also counter-intuitive: use overflow: hidden on the parent element. In practice, this does the opposite of what you might expect:

有许多针对此问题的“透明浮动”或“ clearfix”解决方案。 最简单的解决方案非常有效,但也违反直觉:使用overflow: hidden在父元素上。 实际上,这您期望的相反

#levee {
    border: 2px solid #333;
    overflow: hidden;
}

Which fixes the problem completely.

完全解决了问题。

翻译自: https://thenewcode.com/1167/When-The-Levee-Breaks-Solutions-for-Web-Page-Overflow-Issues

1013: 防水堤坝

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

1013: 防水堤坝_当堤坝断裂时:网页溢出问题的解决方案 的相关文章

  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 用于安装 R 软件包的备用编译器:clang:错误:不支持的选项“-fopenmp”

    我正在尝试在 OS X 10 11 6 上使用 R 版本 3 4 0 安装 rJava 包 install packages rJava type source 我收到以下错误 clang o libjri jnilib Rengine o
  • css 计数器在 Internet Explorer 中无法工作以获取隐藏内容 - 如何修复?

    我们想要一些编号列表 并发现了这个很酷的计数器 您可以在 css 中使用它来让浏览器为您计算数字 ol instructions counter reset instructions section ol instructions gt l
  • 用 python 编写的数学语法检查器

    我需要的只是使用 python 检查字符串是否是有效的数学表达式 为了简单起见 假设我只需要 运算符 也作为一元 带有数字和嵌套括号 为了完整性 我还添加了简单的变量名称 所以我可以这样测试 test 3 2 1 valid test 3
  • 使水平滚动条始终可见,即使底部不在视图中

    我将用一个片段来开始这个问题 该片段几乎显示了我想要完成的任务 wrapper overflow hidden display flex sidebar min width 200px background 333 color FFF co
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li
  • 如何在启用嵌入时间戳和 LTV 的情况下签署 PDF?

    我正在尝试签署启用了时间戳和 LTV 的 pdf 以便它在 Adob e Reader 中显示如下 在英语中 这意味着 签名包含嵌入的时间戳 和 签名启用了 LTV 这是我正在使用的代码 PrivateKey pk get pk from
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 使用 html5 分块上传文件

    我正在尝试使用 html5 的文件 API 分块上传文件 然后在服务器端用 php 重新组装它 我正在上传视频 但是当我在服务器端合并文件时 大小增加了 并且它变成了无效文件 请注意 以下 html5 代码仅适用于 chrome 浏览器 在
  • Java给定长度的随机数

    我需要在 Java 中生成一个恰好 6 位数字的随机数 我知道我可以在随机发生器上循环 6 次 但是在标准 Java SE 中还有其他方法可以做到这一点吗 要生成 6 位数字 Use Random http download oracle
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • 在java中创建一个XML树并将其转换为json对象

    我尝试创建也能够转换为 json 的树 但对于只有一个xpath 当我尝试实现多个 xpath 时 我无法获得所需的输出 这里我分享一下我的实现 private static Document addElemtbypath List
  • 乔达时间中两个日期之间的天数

    如何找到两次之间的天数差异乔达时间 http www joda org joda time DateTime http www joda org joda time apidocs org joda time DateTime html实例
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • Elasticsearch 通过搜索返回拼音标记

    我用语音分析插件 https www elastic co guide en elasticsearch plugins current analysis phonetic html由于语音转换 从弹性搜索中进行一些字符串匹配 我的问题是
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 通过向上转换将 Java.sql.date 转换为 Java.util.date 安全吗?

    java sql date 扩展了 java util date 那么通过将 java sql date 转换为 java util date 是否可以在两者之间进行转换 或者有其他方法可以转换它们吗 您不一定需要强制转换 您可以将 SQL
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que

随机推荐

  • 防御第三天

    1 总结当堂NAT与双机热备原理 形成思维导图 2 完成课堂NAT与双机热备实验 fw1
  • PIO操作Excel,通过文件流判断Excel的版本

    import com fasterxml jackson databind exc InvalidFormatException import org apache poi ss usermodel Workbook import org
  • 送书

    又到了周三了 说实话 本来这期想鸽的 上海这边的疫情太严重了 前几期上海这边中奖的粉丝都没办法收货 只能等解封后再安排了 在这里和大家道个歉 希望大家谅解 最后希望在上海的小伙伴们早日渡过难关 像这种一把青菜50块的日子什么时候才是个头啊
  • 推荐七种开源免费的C/C++网络库

    1 ACE 庞大 复杂 适合大型项目 开源 免费 不依赖第三方库 支持跨平台 2 Asio Asio基于Boost开发的异步IO库 封装了Socket 简化基于socket程序的开发 开源 免费 支持跨平台 3 POCO POCO C Li
  • java向上转型思考

    https www cnblogs com bangaj p 5813738 html 下面是对向上转型思考 作用 简化开发 体现类的多态性 保证代码简洁 实现前提 因为java是动态绑定特点 在编译时会编译器会自动找寻到 是子类方法还是父
  • COUNT(1) 和 COUNT(*) COUNT(字段) 傻傻分不清

    写 SQL 的时候突然想到一个问题 COUNT 1 和 COUNT 有啥区别 COUNT 字段 呢 在数据库的增删改查操作中 使用最频繁的就是查询操作 而在所有查询操作中 统计数量操作更是经常被用到 关于数据库中行数统计 无论是MySQL还
  • Pandas学习笔记

    1 Pandas作用 一个提供快速 可扩展和展现数据结构的Python库 目标是成为使用Python处理时间和实际数据分析的模块 有两种数据结构 Series和DataFrame 1 Series是一种类似于NumPy数组的对象 由一组数据
  • Ubuntu16.04下安装sogou输入法

    1 首先进入搜狗输入官方网站 找到对应的for Ubuntu进行下载 链接如下 https pinyin sogou com 进入进行下载 下载完成的文件后缀名为 deb文件 2 开始安装
  • 软件测试用例常用七大方法

    第一 测试用例格式包括十大特点 用例编号 测试项 测试标题 用例属性 重要级别 高中低 预置条件 测试输入 操作步骤 预期结果 实际结果 第二 等价类 1 等价类定义 2 等价类划分 3 等价类划分规则 4 进行等价类用例设计 5 案例加以
  • css——优先级(权重)

    阅读本文需要一定的css基础如有需要可以先了解一下 css选择器 首先来说一下我们的核心CSS 层叠样式表 Cascading Style Sheets 缩写为 CSS 是一种 样式表 语言 用来描述 HTML 或 XML 包括如 SVG
  • Python爬虫从入门到精通:(23)Selenium扩展知识小技巧_Python涛哥

    如何让selenium规避检测 有的网站会检测请求是否为selenium发起 如果是的话则让该次请求失败 规避检测的方法 selenium接管chrome浏览器 实现步骤 必须将你电脑中安装的谷歌浏览器的驱动所在的目录找到 且将目录添加到环
  • 【后端】Java根据日期获取哪年的第几季度

    记录自己日常写的通用方法 根据日期 Date 获取哪年的第几季度 如下面代码 public String GetQuarterByDate String date throws ParseException if date equals d
  • jQuery ajax重复调用问题

    前段时间项目中遇到有的页面调用一次ajax会发送两次请求的问题 发现注释掉构造jQuery Dialog代码后正常 最终找出的原因是构造jQuery Dialog的div中有多余且未闭合的标签所致
  • 彩虹表(rainbow table)

    1 彩虹表引入 在看微众银行开源的WeIdentity规范中的可验证凭证Credential数据结构时 看到有关于防止彩虹表方式反向破解哈希的问题 如下图所示 在执行选择性披露用户的信息时 是将claim中的其他字段内容进行hash 只披露
  • vue.js -- 条件渲染

    目录 条件渲染 v if的用法 v if v else的用法 v if v else if v else的用法 v show的用法 v if 和 v show 的区别 条件渲染 v if的用法 代码演示
  • 蓝桥杯专题之思维篇

    题目列表 2014年 蚂蚁感冒 2016年 交换瓶子 2018年 乘积最大 2019年 后缀表达式 2022年第一次模拟赛 停车位 1 蚂蚁感冒 题目描述 长100厘米的细长直杆子上有n只蚂蚁 它们的头有的朝左 有的朝右 每只蚂蚁都只能沿着
  • leaflet-editable

    请参阅演示 UI 下面是更多示例 这也是uMap背后的绘图引擎 安装 您需要 Leaflet gt 1 0 0 然后包含src Leaflet Editable js 路径拖动 如果你想要路径拖动 你还需要包含Path Drag js 快速
  • vscode 预览图片 插件_真的动手写的VSCode的插件(图片浏览)之1

    由于本职工作中经常做图像处理 于时大量的图片浏览是不可避免的 怎么样不离开最近经常使用的VSCode 同时去看大量的图像对我来讲就是个不错的需求 尤其是某个目录下的文件 先谈基本的需求吧 显示一个目标下的所有图像 最好图像可以按列表 块显示
  • DQN学习使用混合规则的柔性车间AGV实时调度(关注点:状态、奖励函数的设置)

    1 文章简介 本文原文可查阅文献 Deep reinforcement learning based AGVs real time scheduling with mixed rule for flexible shop floor in
  • 1013: 防水堤坝_当堤坝断裂时:网页溢出问题的解决方案

    1013 防水堤坝 After unexpected gaps in pages perhaps the most common layout problem is content overflow Thankfully there are