Ver Mensaje Individual
  #19 (permalink)  
Antiguo 30/12/2007, 21:31
Avatar de virla
virla
 
Fecha de Ingreso: julio-2002
Ubicación: Rio Gallegos - Santa Cruz
Mensajes: 893
Antigüedad: 22 años, 4 meses
Puntos: 1
Re: Texto en dos columnas

Cita:
Iniciado por derkenuke Ver Mensaje
Voy a hacer una aportación más, no sé si será la última.

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">
body {
    
height:100%;
}
#elArticulo {
    
width58%; 
    
background-color#FFF4D2; 
    
height80%; 
    
font-size0.7em
    
font-familyverdana
    
margin:0
    
padding:50px 10px 30px 20px
    
line-height1.3em
}
#elArticulo p {
    
margin:0;
    
margin-bottom1.3em;
}
.
pal {
    
displayinline;
}
.
columnata {
    
clearboth;
    
width97%;
    
height700px;
}
.
columna {
    
width48%;
    
padding3px
    
background-color#EDFFCC;
    /*border: solid 1px #669900; */
    
height700px;
    
float:left;
}
</
style>
</
head>
 
<
body>
 
 
 
<
div id="elArticulo">
    <
p>TEXTO 1 -- Lorem ipsum dolor sit ametconsectetuer adipiscing elitNunc malesuadaorci nec convallis elementumjusto dui sodales feliseu ullamcorper ante risus a miMauris at maurisUt et ipsum quis mi accumsan consectetuerDonec dictum sem nec anteProin magna liberoelementum egetscelerisque necconsequat vitaeduiPellentesque malesuada mauris vel diamVestibulum a semVivamus magna massaullamcorper acvarius pretiumaliquet necarcuNam tempor accumsan nullaFusce ipsumQuisque ac ipsum non nisi commodo tinciduntEtiam turpisDuis bibendum velit non nislNam volutpat lacinia eratNunc euismodSuspendisse vel dolor non arcu pellentesque ultrices.</p>
 
    <
p>Sed iaculis libero et nislSed congue dui sit amet estMorbi sit amet elit vel turpis varius tristiqueMorbi ac miCum sociis natoque penatibus et magnis dis parturient montesnascetur ridiculus musAenean sit amet nibh sed turpis nonummy euismodMaecenas magnaEtiam suscipiturna vitae sodales euismoddiam orci mollis liberoat pulvinar arcu sapien sit amet lectusNunc sagittis lobortis miQuisque ultrices.</p>
 
    <
p>In semSed suscipit ipsum at maurisUt aliquam orci ullamcorper ligulaNam sed arcu et nulla volutpat egestas. Class aptent taciti sociosqu ad litora torquent per conubia nostraper inceptos hymenaeosSuspendisse rhoncusSuspendisse venenatis sapien vitae loremMauris porta quam non nuncCum sociis natoque penatibus et magnis dis parturient montesnascetur ridiculus musPellentesque quam justodapibus sedullamcorper acsuscipit egetmassaSed suscipit ipsum at maurisUt aliquam orci ullamcorper ligulaNam sed arcu et nulla volutpat egestas.</p>
 
    <
p>Integer a nislEtiam lectus magnapulvinar consectetuerelementum vitaeluctus rutrumlacusCras leoIn faucibusdui a tempor volutpatpurus magna nonummy antenec bibendum erat nunc convallis arcuPraesent convallisMauris non liberoVivamus nuncSed diamMorbi pulvinar nulla sodales ipsumNam ac turpis eget ipsum consequat euismod.</p>
</
div>
<
button type="button" onclick="dosColumnas()">Dos columnas</button>
 
 
 
<
script type="text/javascript">
<!--
 
// altura total del documento
var doc_height document.body.clientHeight || window.innerHeight;
 
// document.getElementById abreviado
function $(x) { return document.getElementById(x); }
 
/*
    El código coge cada palabra de la capa $("elArticulo"), y la mete en un DIV. 
    Ese DIV se mide en altura y se hallan sus coordenadas. 
    Se va colocando en columna1 los DIVs, uno por uno. 
    Siempre sabemos en que número de línea nos encontramos gracias a las coordenadas. 
    También sabemos el número de líneas que caben gracias a que medimos el alto de una palabra y el alto del DIV columna1.
 
    Cuando colocamos una palabra (o un salto de línea) y nos hemos pasado de la cantidad lineasCaben de columna1, entonces pasamos a poner palabras en columna2.
*/
function dosColumnas() {
    var 
capa = $("elArticulo");
    var 
hijos capa.childNodes;
    
// voy a dibujar las dos columnas en la capa
    
var columnata document.createElement("DIV");                // columnata contiene las dos columnas c1 y c2
    
columnata.className "columnata";
    var 
c1 document.createElement("DIV");
    
columnata.style.height c1.style.height 0.8*doc_height +"px";
    
c1.className "columna";
    var 
c2 c1.cloneNode(true);
    
columnata.appendChild(c1);
    
columnata.appendChild(c2);
    
capa.appendChild(columnata);
    
// fin del dibujo de las dos columnas
    // Variables principales para ir colocando palabra por palabra
    
var loPongoEn c1;                    // controlará en qué columna ponemos las palabras
    
var alturaMaxLoPongoEn loPongoEn.offsetHeight;        // la altura de loPongoEn
    
var lineasCaben;                    // no lo sabemos aún porque no sabemos lo que mide una línea
    
var lineasVamos=0;                    // contador para saber por qué linea vamos
    
var x0;                                // valor de la coordenada x de una palabra para la que empieza una linea nueva.
    // Bucle para recorrer los párrafos de capa, uno a uno
    
for(var i=0l=hijos.lengthi<li++) {
        if( 
hijos[i].nodeType==&& hijos[i].tagName.toUpperCase()=="P" ) {
            var 
texto hijos[i].childNodes[0].nodeValue;
            var 
palabras texto.split(" ");
            
// Por cada palabra del párrafo, la vamos añadiendo
            
for(var j=0n=palabras.lengthj<nj++) {
                var 
encapsulado document.createElement("DIV");                    // creamos el DIV
                
encapsulado.className "pal";                                        // lo ponemos inline
                
encapsulado.appendChilddocument.createTextNode(palabras[j]) );    // le dibujamos la palabra al DIV
                
loPongoEn.appendChild(encapsulado);                                    // lo añadimos a la columna
                
loPongoEn.appendChilddocument.createTextNode(" ") );                // añadimos a la columna el espacio detrás de la palabra    
                
if( lineasCaben == undefined )                    // si no estaba definido lineasCaben, ahora lo podemos definir
                    
lineasCaben Math.flooralturaMaxLoPongoEn / (encapsulado.offsetHeight+1) );
                var 
pos findPos(encapsulado)[0];                // hallamos su coordenada X
                
if( x0 == undefined x0 pos;                    // si x0 no estaba definido, ahora que colocamos la primera palabra la podemos definir
                
else if( x0 == pos lineasVamos++;                // si comenzamos una nueva línea, la contabilizamos
                
if( lineasVamos >= lineasCaben ) {                // Hemos puesto una línea más de las que cabían. Nos tenemos que arrepentir de haber puesto la ultima palabra
                    
loPongoEn.removeChildloPongoEn.lastChild );        // eliminamos el espacio en blanco (nodo de texto)
                    
loPongoEn.removeChildloPongoEn.lastChild );        // eliminamos la última palabra, la de arrepentimiento
                    
j--;                                        // repetir la palabra, pero ya en c2
                    // reseteamos las variables principales
                    
loPongoEn c2;    
                    
lineasVamos 0;
                    
x0 undefined;
                }
 
            }
            
loPongoEn.appendChilddocument.createElement("P") );        // dejamos un espacio entre párrafo y párrafo
            
lineasVamos++;                                                // contabilizamos el espacio como linea nueva
            
if( lineasVamos >= lineasCaben ) {                            // Hemos puesto una línea más de las que cabían. Nos tenemos que arrepentir de haber la última separación P
                
loPongoEn.removeChildloPongoEn.lastChild );                // eliminamos la separación
                // reseteamos las variables principales
                
loPongoEn c2;
                
lineasVamos 0;
                
x0 undefined;
            }
        }
    }
    
// Eliminación del texto original
    // elimino todos los hijos de capa que no sean DIVS!
    
for(var i=0i<hijos.lengthi++) {
        if( !(
hijos[i].nodeType==&& hijos[i].tagName.toUpperCase()=="DIV") ) {
            
capa.removeChildhijos[i] );
            
i--;
        }
    }
}
 
 
// créditos findPos: http://www.quirksmode.org/js/findpos.html
function findPos(obj) {
    var 
curleft curtop 0;
    if (
obj.offsetParent) {
        
curleft obj.offsetLeft
        curtop 
obj.offsetTop
        
while (obj obj.offsetParent) {
            
curleft += obj.offsetLeft
            curtop 
+= obj.offsetTop
        
}
    }
    return [
curleft,curtop];

 
 
 
 
// -->
</script>
 
</body>
</html> 
Bueno la verdad esta bueno salvo que tiene un problemita, cuando le volves a dar al boton se agranda el campo pero no vuelve a ponerlo en una columna o no tiene la posibilidad de poner en tres, pero el aporte esta muy bien, mis felicitaciones y felicidades para este año que comienza
__________________
---->Sin ayuda no se llega a ningun lado<----
Virla