list - ¿Alternativas a etiquetas ilegales o<p> dentro de etiquetas<li> en un vuelo estacionario?
popup hover (5)
¿Alguien tiene una sugerencia para crear espacios de línea tipo párrafo dentro de una etiqueta <li>
que incluye una pseudo-clase pop-up?
Tengo un <span>
que aparece en a:hover
y quiero que el texto que aparece se divida en 2 párrafos. Funciona con <br>
en FF pero quiero hacer lo correcto (¡ahora que he descubierto que está mal!) ...
html:
<div id="rightlist">
<ul>
<li><a href="">List item
<span>
words words words that are "paragraph" 1 of List item
<br><br>
different words that make up "paragraph" 2 of List item
</span></a></li>
css:
#rightlist {
margin-top: 10px; margin-right: 5px; width: 387px ; height: 239px ;
background-color: #7EBB11 ;
display: table-cell;
z-index: 100 ;
float: right ;
}
#rightlist ul {
text-align: left;
margin: 0;
margin-top: 6px;
font-family: sans-serif;
font-size: 20px ;
color: black ;
}
#rightlist a
{
display: table-cell;
text-decoration: none; color: black;
background: #7EBB11 ;
}
/*appearance of the <a> item (but before the <span> tag) on hover*/
#rightlist a:hover {
color: white;
}
/*appearance of the spanned content within <a></a> tags when not hovered */
/* %%%%% important - keep position:absolute in this div %%%%% */
#rightlist a span {
display: none;
position: absolute ;
margin-left: -412px;
top: -10px; left: 10px; padding: 10px ;
z-index: 100;
width: 380px; height: 222px;
color: white; background-color: #7EBB11;
font: 0.75em Verdana, sans-serif; font-size: 13px ; color: black;
text-align: left;
}
/*appearance of spanned content within <a> tags when hovered*/
#rightlist a:hover span {
display: table-cell ;
}
¿Por qué es ''incorrecto''?
su etiqueta br quizás debería codificarse como:
<br />
¿Por qué tu manera actual está mal?
Puedes intentar esto
<span>
<p>words words words that are "paragraph" 1 of List item</p>
<p>different words that make up "paragraph" 2 of List item</p>
</span>
Err no hay nada de malo en tener <br>
dentro de <a>
o <span>
. Es perfectamente válido de acuerdo con la especificación HTML 4.01 .
Editar: <li>
puede contener <p>
, <br>
y prácticamente cualquier otra cosa.
La especificación es un poco difícil de leer, pero básicamente dice:
-
LI
puede contenerblock
o eninline
-
block
está hecho deP
+ algunas otras cosas -
inline
está hecho despecial
+ algunas otras cosas -
special
está hecho deA
+BR
+ algunas otras cosas
Con respecto a <a>
dice:
-
A
puede contener eninline
exceptoA
-
inline
... ver arriba
Podrías agregar otro lapso como una etiqueta p "falsa":
<li><a href="">List item
<span>
<span>words words words that are "paragraph" 1 of List item</span>
<span>different words that make up "paragraph" 2 of List item</span>
</span></a></li>
Y en tu css:
#rightlist span span {display:block;margin:...}
Tenga en cuenta que todo lo que declare para #rightlist span
se aplicará a #rightlist span span
, por lo que es posible que necesite anular algunas de las reglas en #rightlist span span
.
Su problema puede surgir del hecho de que está usando una etiqueta <span> incorrectamente.
Se supone que los espacios en blanco son elementos en línea y lo estás diseñando como si fuera un elemento de bloque. Es cierto que puede forzar un tramo para comportarse como un elemento de bloque mediante la adición del estilo correcto, pero esto no siempre se respeta por los diversos navegadores que hay.
Idealmente, deberías estar usando un div en su lugar. Luego puede usar etiquetas p o más etiquetas div para indicar los párrafos (idealmente p, ya que semánticamente son en realidad párrafos en lugar de bloques de texto no relacionados).