Mi piacerebbe sovrapporre un div (o qualsiasi elemento che funzionerà) su una riga della tabella (tag tr) che ha più di una colonna.Come sovrapporre un div (o qualsiasi elemento) su una riga della tabella (tr)?
Ho provato alcuni metodi, che non sembrano funzionare. Ho pubblicato il mio codice attuale qui sotto.
Ottengo un overlay, ma non direttamente sopra la riga. Ho provato a impostare l'overlay top su $ divBottom.css ('top'), ma è sempre 'auto'.
Quindi, sono sulla buona strada, o c'è un modo migliore di farlo? Utilizzare jQuery va bene come puoi vedere.
Se sono sulla buona strada, come faccio a posizionare correttamente il div? L'offsetTop è un offset nell'elemento contenitore, nella tabella e ho bisogno di fare qualche calcolo matematico? Qualche altra cosa con cui mi imbatterò?
$(document).ready(function() {
$('#lnkDoIt').click(function() {
var $divBottom = $('#rowBottom');
var $divOverlay = $('#divOverlay');
var bottomTop = $divBottom.attr('offsetTop');
var bottomLeft = $divBottom.attr('offsetLeft');
var bottomWidth = $divBottom.css('width');
var bottomHeight = $divBottom.css('height');
$divOverlay.css('top', bottomTop);
$divOverlay.css('left', bottomLeft);
$divOverlay.css('width', bottomWidth);
$divOverlay.css('height', bottomHeight);
$('#info').text('Top: ' + bottomTop + ' Left: ' + bottomLeft);
});
});
#rowBottom { outline:red solid 2px }
#divBottom { margin:1em; font-size:xx-large; position:relative; }
#divOverlay { background-color:Silver; text-align:center; position:absolute; z-index:10000; opacity:0.5; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
<title>Overlay Tests</title>
</head>
<body>
<p align="center"><a id="lnkDoIt" href="#">Do it!</a></p>
<table width="100%" border="0" cellpadding="10" cellspacing="3" style="position:relative">
<tr>
<td><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></td>
</tr>
<tr id="rowBottom">
<td><div id="divBottom"><p align="center">This is the bottom text</p></div></td>
</tr>
<tr>
<td><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p></td>
</tr>
</table>
<div id="divOverlay" style=""><p>This is the overlay div.</p><p id="info"></p></div>
</body>
</html>
suo eccessivamente già raccolto "position: absolute" dal suo foglio di stile. Comunque hai ragione sull'uso di "pos()". – Pointy
Sembra fare il trucco ... con una modifica: var rowPos = $ divBottom.pos(); deve essere var rowPos = $ divBottom.offset(); .offset() è in alto/a sinistra nel documento. – slolife
jquery non ha una funzione chiamata 'pos'. La sintassi corretta sarebbe $ divBottom.position(); –