Tengo una página (XHTML Strict) donde floto una imagen junto con párrafos regulares de texto. Todo va bien, excepto cuando se usa una lista en lugar de párrafos. Las viñetas de la lista se superponen a la imagen flotante.
Cambiar el margen de la lista o los elementos de la lista no ayuda. El margen se calcula a partir de la izquierda de la página, pero el flotador empuja los elementos de la lista a la derecha en el interior del li
mismo. Entonces el margen solo ayuda si lo hago más ancho que la imagen.
Flotar la lista al lado de la imagen también funciona, pero no sé cuándo la lista está al lado de un flotador. No quiero flotar todas las listas en mi contenido solo para arreglar esto. Además, la izquierda flotante desordena el diseño cuando una imagen flota a la derecha en lugar de a la izquierda de la lista.
La configuración li { list-style-position: inside }
mueve las viñetas junto con el contenido, pero también hace que las líneas que se ajustan comiencen a alinearse con la viñeta, en lugar de alinearse con la línea de arriba.
El problema obviamente es causado por la viñeta que se representa fuera de la caja, el flotador empuja el contenido de la caja hacia la derecha (no la caja en sí). Así es como IE y FF manejan la situación, y que yo sepa, no está mal según las especificaciones. La pregunta es, ¿cómo puedo prevenirlo?
Agregar una mejora a la solución de Glen E. Ivey :
http://jsfiddle.net/mblase75/TJELt/
Prefiero esta técnica, ya que funciona cuando la lista necesita fluir alrededor de la imagen flotante, mientras que la
overflow: hidden
técnica no lo hará. Sin embargo, también es necesario añadirpadding-right: 1em
a lali
de evitar que desborde su contenedor.fuente
position: relative;
a la línea de pedido, crea un problema de apilamiento con el contenido flotante. Descubrí (en Chrome y Firefox) que era difícil desplazarse y hacer clic en los enlaces del contenido flotante. La solución para mí fue agregarposition: relative; z-index: 1;
al elemento flotante, que parecía resolver el problema de apilamiento.ul {overflow: hidden;}
resolvió este problema en todos los navegadores, la solución anterior fue el único remedio funcional para este problema con Prince XML , un convertidor XHTML + CSS3 a PDF.Aquí es donde entra en juego la propiedad "display". Configure el CSS a continuación para que la lista funcione junto con el contenido flotante.
pantalla: mesa; funciona junto al contenido flotante (llenando el vacío) pero sin ocultar el contenido detrás de él. Al igual que una mesa :-)
EDITAR: Recuerde agregar una clase para aislar las listas para las que desea hacer esto. Por ejemplo, "ul.in-content" o más generalmente ".content ul"
fuente
Pruebe list-style-position: inside para cambiar el diseño de las viñetas.
fuente
list-style-position:inside
sería una gran solución, pero hace que las líneas que se ajustan comiencen a alinearse con la viñeta, en lugar de alinearse con la línea de arriba.En http://archivist.incutio.com/viewlist/css-discuss/106382 encontré una sugerencia que funcionó para mí: diseñar los elementos 'li' con:
Donde reemplaza "1em" con el ancho del margen / margen izquierdo que tendrían los elementos de la lista si el flotador no estuviera presente. Esto funciona muy bien en mi aplicación, incluso manejando el caso donde el fondo del flotador ocurre en el medio de las listas: las balas vuelven al margen izquierdo (local) justo a la derecha.
fuente
Por que
overflow: hidden
funcionaLa solución es tan fácil como:
Un cuadro de bloque con
overflow:
otro quevisible
establece un nuevo contexto de formato de bloque para su contenido. Recomendación del W3C: http://www.w3.org/TR/CSS2/visuren.html#block-formattingEjemplo
Los botones en mi sitio web , que están
<li>
disfrazados, están hechos de esta manera. Reduzca la ventana gráfica (ventana) de su navegador para ver la sangría en acción .Respuestas relacionadas
Artículo con ejemplos
fuente
Al agregar
overflow: auto;
a susul
obras al menos para mí.Actualizar
He actualizado mi jsfiddle para visualizar lo que está sucediendo. Al tener el
ul
lado al lado del flotanteimg
, el contenido delul
mismo será empujado por el flotador, pero no el contenedor real. Al agregaroverflow: auto
elul
-box completo, el flotador lo empujará en lugar de solo el contenido.fuente
Podrías asignar
position: relative; left: 10px;
a lali
. (También es posible que desee darle unmargin-right: 10px;
, de lo contrario, podría ensancharse demasiado en el lado derecho).O, si desea utilizarlo
float
paraul
, como lo sugieren otros, probablemente pueda evitar que el resto flote a la derecha del ul utilizandoclear: left
el elemento que sigue al ul.fuente
Estoy usando esto para resolver este problema:
fuente
Descargo de responsabilidad
Las listas junto a los elementos flotantes causan problemas. En mi opinión, la mejor manera de prevenir este tipo de problemas flotantes es evitar las imágenes flotantes que se cruzan con el contenido. También ayudará cuando tenga que soportar un diseño receptivo.
Un diseño simple de tener imágenes centradas entre párrafos se verá muy atractivo y será mucho más fácil de soportar que tratar de ser demasiado elegante. También está a un paso de un
<figure>
.¡Pero realmente quiero imágenes flotantes!
Ok, si estas
locolo suficientemente persistente para continuar por este camino, hay un par de técnicas que se pueden utilizar.Lo más simple es hacer que la lista use
overflow: hidden
ooverflow: scroll
para que la lista esté esencialmente encogida, lo que lleva el relleno a donde es útil:Sin embargo, esta técnica tiene algunos problemas. Si la lista se alarga, en realidad no se ajusta a la imagen, lo que prácticamente anula el propósito de usarla
float
en la imagen.¡Pero realmente quiero envolver listas!
De acuerdo, así que si eres aún más
locoy persistente y debes continuar por este camino, hay otra técnica que se puede usar para envolver los elementos de la lista y mantener las viñetas.En lugar de rellenar el
<ul>
y tratar de que se comporte bien con las balas (lo que parece que nunca quiere hacer), retire esas balas del<ul>
y entreguelas al<li>
s. Las balas son peligrosas, y el<ul>
justo no es lo suficientemente responsable como para manejarlas adecuadamente.Este comportamiento de ajuste puede hacer cosas extrañas al contenido complejo, por lo que no recomiendo agregarlo de forma predeterminada. Es mucho más fácil configurarlo como algo que se puede optar en lugar de algo que se debe anular.
fuente
Pruebe lo siguiente en su etiqueta UL. Esto debería ocuparse de las viñetas que se superponen a su imagen y no tiene que estropear su alineación izquierda causada por
list-position: inside
.fuente
Luché con esto yo mismo. Lo mejor que he logrado es lo siguiente:
El texto no está realmente sangrado, pero se muestra la viñeta.
fuente
Editado para actualizar según el comentario de OP
ok, entonces solo divídalo en 2 divs anidados juntos
intente cambiar el ul li css a
ul {float: izquierda; fondo: azul; }
fuente
Después de luchar con este interesante tema en varios proyectos e investigar por qué sucede, finalmente creo que encontré ambos: un trabajo y 'receptivo' solución .
Aquí está el truco de magia, ejemplo en vivo: http://jsfiddle.net/superKalo/phabbtnx/
fuente
display: flex;
ali
, de modo que el bulletpoint se centra verticalmente, cuando cambio el tamaño de fuente de la:before
parte.Al trabajar dentro de un LMS sin acceso al jefe de documento, me resultó más fácil usarlo
margin-right: 20px
como un estilo en línea para la imagen. Lo que le debo a este sitio .fuente
prueba esto:
Si quieres que se vayan a la izquierda, solo pon un valor - ## px.
fuente
o podrías hacer esto:
y luego eliminar todo el estilo del li
fuente
¿Qué tal esto?
fuente
margin-left: auto hará que el elemento esté alineado a la derecha. Establezca la altura y el ancho del elemento que desee: en mi es una imagen de fondo en un div dentro
fuente
También puede intentar flotar
ul
a la izquierda y definir un apropiadowidth
para él, de modo que flote al lado de la imagen.Algo un poco como este jsfiddle ?
fuente
Lo arreglé con
fuente
fuente
Añadir
display:table;
aul
:fuente