Containing Floats 包含浮动_html/css_WEB-ITnose
原文: http://www.complexspiral.com/publications/containing-floats/
正因为浮动功能强大,而且很有用,所以常被用作布局的技巧工具。你可能看到过图1中的情形,这是仅由两个div元素实现的,每个div中有一个浮动的图片。
图1. 那是不正确的
这可能不是作者的意图,但是考虑到所使用的样式,这是正确的布局啊。我们是这样创建的:
div.item {border: 1px solid; padding: 5px;}div.item img {float: left; margin: 5px;}
以上是所有的样式。在图1中看到的结果是因为div元素没有“拉伸”以包含住其中的浮动图片。从另外的角度来看,出现这种情况是因为浮动元素“伸出”了div元素的底部。
这不是一个bug,也不是CSS的缺陷。事实上,许多作者大部分情况下想要这种伸出的行为。仅仅在图1中显示的例子不是他们想要的。
理解问题
那什么时候作者想要浮动伸出包含元素的效果时被认为是正确的呢?很简单:从历史上看最常见的使用浮动的情况是什么。考虑下图2和生成此效果的基本标记结构。
图2. 浮动图片,流动文本
( http://meyerweb.com/other/china/jul31.html穿越中国)
<p> ...text... <img class="picture lazy" src="/static/imghw/default1.png" data-src="jul31-03-sm.jpg" style="max-width:90%" border="0" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > ...text...</p><p> ...text...</p>
将流动的文本环绕在图片周围这种实践可追溯到很久以前。这就是从Netscape1.1开始将这种能力添加到Web的原因,也是CSS使用属性float使其成为可能的原因。但是再仔细看看图2。浮动图片伸出了包含它的元素。我们通过给段落添加边框可以看得更清楚,如图3所示。
图3.在段落上添加边框
所以现在我们知道了浮动元素伸出包含它们的元素为什么是重要的了。如果不伸出,图2将是图4的样子。
图4. 如果浮动元素扩展它们的父元素
这将是设计者不能够接受的。所以,为了保留Web设计的传统和作者的期望,CSS被设计成允许浮动元素伸出包含它们的元素的底部。虽然这对于一般的文本流是必须的,但主要问题出现在把浮动用于布局用途的时候。
清除解决方案
如果浮动被用在非表格布局中,那么需要某种方式让包含它们的元素拉伸以包含住它们。目前,需要一点结构性的hack。既然我们要在包含元素的底部放一个元素来清除以前浮动的底部,clear是我们的答案。我们仅需要在容器结束之前插入一个块级元素,并清除浮动。考虑:
<div class="item"> <img src="/static/imghw/default1.png" data-src="w6144.gif" class="lazy" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > Widget 6144 <br>$39.95 <hr></div><div class="item"> <img src="/static/imghw/default1.png" data-src="w6145.gif" class="lazy" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > Widget 6145 <br>$44.95 <hr></div>
现在我们将以下规则应用到前面的标记上,得到图5的效果。
div.item hr {display: block; clear: left; margin: -0.66em 0; visibility: hidden;}
图5 使用水平规则强制扩展
通过确保hr元素是块级的,又是正常流的一部分,而且清除了浮动,我们强制div“拉伸包含住”左浮动的图片。
负数的顶部和底部margin一般产生关闭hr占用的空间的效果。然而,这不是精度的,而且浏览器之间也不尽相同。水平规则的半神秘性使得很难确切预测将会出现什么状况。hr的有效高度可能是0,或者一个小正数,或者甚至是一个负数高度。
因此,在需要精确清除效果的情况下,作者可以使用div取代hr来创建清除效果。例如:
div.clearer {clear: left; line-height: 0; height: 0;}<div class="item"> <img src="/static/imghw/default1.png" data-src="w6144.gif" class="lazy" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > Widget 6144 <br>$39.95 <div class="clearer"> </div></div>
设置Float来修复Float
有一种方式可以避免过度使用到现在为止讨论过的结构性hack,虽然这些结构性hack有时候仍然是必要的。在大多数浏览器中,正如CSS2.1中所定义的,浮动元素会扩展以便包含任何从它遗传的浮动元素。所以在小产品例子中,我们可以移除“clearer”元素,使用这些风格替代:
div.item {float: left; border: 1px solid; padding: 5px; width: 60%;}div.item img {float: left; margin: 5px;}
注意我们浮动了图片和“item”div。通过设置div的宽度超高50%,我们确保div不会出现在同一行,而是垂直地堆积在一起。效果如图6。图6 使用浮动实现拉伸以包含住浮动元素。
就标记和风格而言,很明显这样管理起来更简单了。然而,到现在为止讨论过的hack仍然是有用的。假设你想在商品的下面放些建议文本。为了让文本不流到商品的右边,我们需要插入清除hack。这会引导我们创建如下标记,如图7所示。
<div class="item"> <img src="/static/imghw/default1.png" data-src="w6144.gif" class="lazy" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > Widget 6144 <br>$39.95</div><div class="item"> <img src="/static/imghw/default1.png" data-src="w6145.gif" class="lazy" alt="Containing Floats 包含浮动_html/css_WEB-ITnose" > Widget 6145 <br>$44.95</div> <div class="clearer"> </div> <p>Widgets are sold on an "as is" basis without warranty or guarantee.</p>
图7 浮动加hack实现想要的布局
起清除作用的div有效地将正常流推下来,强制任何后面的内容跟在被清除元素后面,因此跟在浮动div后面。
使用浮动包含浮动的潜在缺陷是依赖浏览器对多层嵌套的浮动元素的布局的一致解释。如果这些浮动元素是更复杂布局的一部分,情况变得更脆弱,该部件可能使用了浮动,定位或表格。这不是说这些布局不可能实现。然而,他们可能涉及大量的试验和错误,避免晦涩浮动和其他可能潜藏在渲染引擎内部的布局 bug。
<strong>总结</strong>
通过理解浮动和正常流之间的相互联系,理解清除可用来处理浮动周围的正常流,作者可以把浮动当作一个非常强大的布局工具。由于浮动最初不是用于布局,为了让它们达到预期有些hack可能是必要的。这可能涉及包含浮动的浮动元素,“清除”元素,或者两者的结合。
展望未来,已有各种提议要增强CSS,允许作者声明一个元素拉伸以包含住其中的任何浮动元素。很明显将这种能力添加到CSS是受欢迎的,但是截止到本文撰写时,还没有添加这种能力,对这种能力的支持可能还需要很长一段时间。源代码 http://files.cnblogs.com/jeffma/code.rar

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

HTML, CSS et jQuery : Créer un bouton avec un effet flottant nécessite des exemples de code spécifiques Introduction : De nos jours, la conception Web est devenue une forme d'art En utilisant des technologies telles que HTML, CSS et JavaScript, nous sommes en mesure d'ajouter divers aspects à la page. . De tels effets spéciaux et effets interactifs. Cet article présentera brièvement comment utiliser HTML, CSS et jQuery pour créer un bouton avec un effet flottant et fournira des exemples de code spécifiques. 1. Structure HTML Tout d'abord, nous devons

Existe-t-il une méthode pour effacer les flottants ? Des exemples de code spécifiques sont requis. Dans la mise en page Web, les flottants sont une méthode de mise en page courante qui permet aux éléments de se détacher du flux de documents et d'être positionnés par rapport aux autres éléments. Cependant, un problème souvent rencontré lors de l'utilisation d'une mise en page flottante est que l'élément parent ne peut pas envelopper correctement l'élément flottant, ce qui entraîne une mise en page désordonnée de la page. Par conséquent, nous devons prendre des mesures pour effacer le flotteur afin que l'élément parent puisse envelopper correctement l'élément flottant. Il existe de nombreuses façons d'effacer les flottants. Ce qui suit présente plusieurs méthodes couramment utilisées et donne des exemples de code spécifiques.

Compétences en mise en page HTML : Comment utiliser l'attribut position pour contrôler les éléments flottants Dans la conception Web, la mise en page est un élément très important. Grâce à une mise en page raisonnable, les pages Web peuvent être rendues plus belles et plus faciles à lire, et l'expérience utilisateur peut être améliorée. Dans le processus de mise en œuvre de la mise en page, le contrôle des éléments flottants est l'un des points clés. HTML fournit l'attribut position, grâce auquel nous pouvons contrôler les éléments flottants. Cet article explique comment utiliser l'attribut position pour disposer des éléments flottants et fournit du code spécifique.

Guide des propriétés des images CSS : outline et displayCSS font partie intégrante du développement front-end, et les propriétés des images sont également essentielles. Dans cet article, nous nous concentrerons sur deux concepts importants concernant les propriétés de l'image : le contour et l'affichage. Cet article détaillera leur définition, leur utilisation et des exemples de code spécifiques. Présentation de l'attribut outline : L'attribut outline est utilisé pour créer un contour autour d'un élément sans occuper d'espace de mise en page. c'est

Comment savoir si une chaîne contient des caractères spécifiques en utilisant JavaScript ? En JavaScript, nous pouvons utiliser plusieurs méthodes pour déterminer si une chaîne contient des caractères spécifiques. Trois méthodes couramment utilisées seront présentées ci-dessous et des exemples de code correspondants seront donnés. Méthode 1 : utiliser la méthode indexOf() Vous pouvez utiliser la méthode indexOf() de la chaîne pour déterminer si une chaîne contient les caractères spécifiés. Il renvoie l'index de la première occurrence d'un caractère spécifique dans une chaîne, tel que

jQuery est une bibliothèque JavaScript bien connue qui fournit des fonctions simples et puissantes pour simplifier la programmation JavaScript. Lors de l'introduction de jQuery dans votre projet Web, vous devez ajouter le code suivant au fichier HTML pour introduire les packages nécessaires : Ma page Web

Flotteurs CSS flottants et de compensation : Maîtriser les compétences des flotteurs flottants et de compensation nécessite des exemples de code spécifiques dans la conception et le développement Web, les flotteurs CSS (float) sont l'une des techniques de mise en page courantes. Vous pouvez utiliser float pour déplacer des éléments vers la gauche ou la droite afin d'ajuster la position et la disposition des éléments sur la page. Cependant, les éléments flottants peuvent également causer certains problèmes sur la page, comme la hauteur de l'élément parent qui s'effondre, etc. Par conséquent, il est très important de maîtriser les compétences nécessaires pour utiliser les flotteurs et les nettoyer. Cet article se concentrera sur les techniques de flottement et de compensation CSS et fournira des informations spécifiques.

Liste complète des propriétés de mise en page CSS : affichage, position et float CSS est un langage de balisage utilisé pour contrôler le style des pages Web. Les propriétés de mise en page sont très importantes lors de la conception de la mise en page d'une page Web. CSS fournit une variété de propriétés de mise en page, dont les plus couramment utilisées sont l'affichage, la position et le flotteur. Dans cet article, nous présenterons en détail ces trois propriétés de mise en page et fournirons des exemples de code spécifiques. Attribut d'affichage L'attribut d'affichage est utilisé pour spécifier l'élément
