Hace tiempo que quería desarrollar con CSS algún tipo de galería como esta que facilitara el mostrar varias imágenes en un espacio reducido y el otro día me puse a probar conCodepen hasta que logré algo que me pareció digno y sencillo. Por cierto que os recomiendo ese recurso porque resulta muy útil para ir probando cosas, quitar y poner reglas y ver el resultado inmediatamente según se cambian.
Esta galería tiene además la peculiaridad de que es totalmente adaptable a la ventana (RWD) por lo que su tamaño se ajusta a la misma. Además, las imágenes principales se visualizan bajando poco a poco, a modo de cortinilla, lo que le da un toquecillo simpático.
Pongo la demo lo primero por si no tenéis paciencia. ¡Hala! a mover el puntero y a reducir la ventana del navegador para probarla.
La parte HTML, lo que hay que insertar dónde queramos que aparezca la galería, es algo muy sencillo y además invariable. Sólo se trata de una caja contenedora y luego variosdiv vacíos con claseimagen, tantos como imágenes queramos mostrar.
Lo de invariable es porque con el sistema CSS que plantearé después, las imágenes irán como fondos (background) y por tanto, su dirección habrá que ponerla en el estilo en lugar de aquí que sería lo habitual.
div class="galeria"
div class="imagen"/div
div class="imagen"/div
div class="imagen"/div
div class="imagen"/div
/div
Y bien, ahora vamos a lo que hace lamagia, el CSS. Realmente habrá que ponerlo todo seguido, pero por motivos didácticos lo veremos por partes.
En primer lugar está la caja contenedora, sin ningún misterio. Sólo un posicionamiento relativo para poder ubicar dónde queramos lo que llevará dentro. Lo demás es un centrado, una sombrita y poco más.
position: relative;
width: 90%; /* Ancho a ocupar por la galería sobre el total disponible */
overflow: hidden;
margin: 10px auto;
background-color: #000;
box-shadow: 1px 1px 6px #000;
}
A la galería le añadimos un fondo principal por defecto, que será el que se vea mientras no pulsamos (hover realmente) alguna de las miniaturas. Lo hacemos mediante un añadido con el pseudoelemento:before y lo colocamos justo encima con posicionamiento absoluto. Para que las imágenes principales tengan algo más de realce, esta la puse casi transparente (opacity: .1;).
En adelante marcaré en verde lo único que hay que cambiar, las direcciones de las imágenes. Esta primera como dije, es la que saldrá inicialmente y con unbackground-size: cover; hacemos que se extienda por todo el espacio disponible de la caja contenedora.
content: "";
position: absolute;
width: 100%;
height: 100%;
background: url(https://lh4.googleusercontent.com/-3QNEIgX3Gv4/UCPyLTtnmHI/AAAAAAAAEDY/KGb0eEM9GZo/s720/fuerzas-naturaleza.jpg); /* Fondo por defecto */
-moz-background-size: cover;-webkit-background-size: cover;background-size: cover;
opacity: .1;
}
Si ponemos sólo lo anterior, de momento no veremos nada, ya que no tenemos ningún contenido que rellene la caja para darle alguna dimensión y por tanto esta será de tamaño cero, invisible para nosotros. Pero con lo siguiente ya comenzamos a ver cosas.
Esta será la clase que monte las miniaturas sobre ese fondo y aquí lo que podéis configurar es el ancho. En un principio yo las programé con el 15% del ancho total (algo menos de un sexto), pero lo imprescindible es que esepadding-bottom que es lo que define el alto de la miniatura, lleve idéntico porcentaje para que sean cuadradas.
position: relative;
width: 15%; /* Ancho de la miniatura sobre el ancho total de la galería */
padding-bottom: 15%; /* Idéntico al anterior para miniaturas cuadradas */
background-position: 50% 50%;
-moz-background-size: cover;-webkit-background-size: cover;background-size: cover;
cursor: pointer;
}
Con lo anterior ya sería visible el fondo por defecto y tenemos reservados unos espacios cuadrados a la izquierda de un 15% del ancho, pero vacíos. Y no es que este sea el orden más lógico, pero lo siguiente nos servirá para ir viendo ya cosillas.
Ahora es cuando comenzamos a poner las imágenes que conformarán nuestra galería usando:nth-of-type(x), que lo que hace es aplicar a la cajax con claseimagensus correspondientesbackground. Así el 1 será para la primera, el 2 para la segunda, etc. Como las hicimos de un 15%, de momento nos quedarán como miniaturas. Una parte de lo que queríamos.
background-image: url(https://lh4.googleusercontent.com/-3QNEIgX3Gv4/UCPyLTtnmHI/AAAAAAAAEDY/KGb0eEM9GZo/s720/fuerzas-naturaleza.jpg);
}
.imagen:nth-of-type(2) {
background-image: url(https://lh5.googleusercontent.com/-KijskybjlCc/UCPyNCwVxPI/AAAAAAAAEDg/8AwgBhZyhG4/s800/fuerzas-naturaleza2.jpg);
}
.imagen:nth-of-type(3) {
background-image: url(https://lh5.googleusercontent.com/-uGIMoR677PM/UCPyOBjNWVI/AAAAAAAAEDo/XE73W5FQW-c/s800/fuerzas-naturaleza3.jpg);
}
.imagen:nth-of-type(4) {
background-image: url(https://lh5.googleusercontent.com/-nbNq900tVT4/UCPyQeZkP_I/AAAAAAAAEDw/WsBQhD2Da-o/s800/fuerzas-naturaleza4.jpg);
}
Bueno, pues ya tenemos un contenedor, una imagen grande por defecto y cuatro fondos que nos quedarán como miniaturas a la izquierda. Ahora viene dónde hacemos que esas miniaturas se repliquen convirtiéndose en imágenes grandes. Para ello añadimos encima de cada imagen otra caja con el mismo fondo que la de su elemento padre.
Esto lo hacemos de nuevo con:before, pero esta vez aplicándolo sobre la clase.imagen. Elbackground-image de ese elemento superpuesto tendrá el valorinherit y así todos heredarán la imagen de su padre desde una sola regla.
content: "";
position: absolute;
top: -700%; /* ((Nºimágenes*2)-1)*100*/
left: 100%;
width: 566%; /* (10000/ancho_imagen)-100 */
height: 400%; /* Nºimagenes*100 */
background-image: inherit;
-moz-background-size: cover;-webkit-background-size: cover;background-size: cover;
-moz-transition: all .8s ;-webkit-transition: all .8s ;transition: all .8s ;
}
Y me tengo que detener algo más porque este trozo anterior es dónde está gran parte del secreto de esta galería para que sea adaptable. De arriba hacia abajo...
- top: Cada imagen grande se posiciona sobre su correspondiente miniatura y el porcentaje va referido a lo que ocupa esta de alto, por eso, para que estén inicialmente ocultas las tenemos que subir tanto como imágenes haya, pero multiplicado por dos para que la última no se quede en la coordenada 0 y por tanto visible. El -1 es un ajuste para no subir más de la cuenta.
- left: aquí simplemente nos llevamos la imagen grande un ancho (100%) hacia la derecha para salvar las miniaturas.
- width: La imagen se muestra grande ampliando la miniatura (.imagen) un determinado porcentaje. Este lo averiguamos calculando qué parte sobre el total supone el ancho de la miniatura (.imagen, 15% en el ejempo) y luego viendo cuanto nos sobra para dividir. Matemáticamente esto sería (100-ancho_imagen)*(100/ancho_imagen) y simplificando, (10000/ancho_imagen)-100.
- height: La altura de la imagen necesariamente tiene que ser el del total ocupado por las miniaturas, o lo que es lo mismo la cantidad de ellas que haya multiplicado por 100.
Elbackground-image coninherit ya lo he explicado y eltransition es para que la imagen grande aparezca suavemente al pasar el puntero por encima (hover).
Y por fin el efecto para el hover. Una vez que las imágenes están escondidas por arriba, ya sólo hace falta bajarlas modificando sutop un determinado porcentaje. Su valor será negativo y coincidirá con el número de orden que tengan menos 1, multiplicado por cien.
top: 0%;/* (Nº.nth-1)*(-100) */
}
.imagen:hover:nth-of-type(2):before {
top: -100%; /* (Nº.nth-1)*(-100) */
}
.imagen:hover:nth-of-type(3):before {
top: -200%; /* (Nº.nth-1)*(-100) */
}
.imagen:hover:nth-of-type(4):before {
top: -300%; /* (Nº.nth-1)*(-100) */
}
Para los perezosos que prefieren todo el CSS junto para copiarlo del tirón, eneste fichero lo tenéis.
Con poco podemos añadir alguna regla más alhover sobre.imagen:before y obtener algunos efectos curiosos.
Por ejemplo en otra demo añadí un simpletransform: scale(.9); y quedó esto que podéis veren el siguiente enlace. Ahí también podréis ver cómo se ajustan los valores de las reglas para una galería con seis imágenes, aunque espero que con los comentarios que puse en el CSS sea suficiente para que podáis montarla con la cantidad de imágenes que queráis.
Y por cierto... Que a nadie se le ocurra pedir la variante con miniaturas en horizontal, que eso complica bastante el asunto y si lo hago no va a ser en el corto plazo ;)
MESOTHELIOMA LAW FIRMDONATE CAR TO CHARITY CALIFORNIAHARDDRIVE DATA RECOVERY SERVICESDONATE A CAR IN MARYLAND DONATING A CAR IN MARYLAND,DONATE CARS ILLINOIS,CRIMINAL DEFENSE ATTORNEYS FLORIDA ,BEST CRIMINAL LAWYER IN ARIZONASTRUCTURED ANNUITY SETTLEMENT,ASBESTOS LAWYERS,NUNAVUT CULTURE,DAYTON FREIGHT LINES ,Bextra Bankruptcy Dental Plan Private Jet
Donate Car To Charity CALIFORNIA DONATE CAR FOR TAX CREDITDONATE CARS IN MADONATE YOUR CAR SACRAMENTOHOW TO DONATE A CAR IN CALIFORNIA DONATE YOUR CAR FOR KIDS,CAR INSURANCE QUOTES COLORADO ,NUNAVUT CULTURE,DAYTON FREIGHT LINESHARDDRIVE DATA RECOVERY SERVICES,DONATE A CAR IN MARYLAND,MOTOR REPLACEMENTS,CHEAP DOMAIN REGISTRATION HOSTING,DONATING A CAR IN MARYLANDNos ofrece Mundial Football eloan com, FIFA World Cupuna gran variedad para contratar mesothelioma info y obtener un equity line of credit y una buena estructura de negocio SEO consolidate loans y visitar su casa matriz Mesothelioma law firm,home equity loans domain name searchSelling annuity payments for cash,Sell my structured settlement,Sell structured settlement,Structured settlement,Structured settlement companies,Sell my annuity payments lump sum,Car accident lawyer Denver,Accident injury attorneys,Sell my annuity
MESOTHELIOMA LAW FIRMDONATE CAR TO CHARITY CALIFORNIAHARDDRIVE DATA RECOVERY SERVICESDONATE A CAR IN MARYLAND DONATING A CAR IN MARYLAND,DONATE CARS ILLINOIS,CRIMINAL DEFENSE ATTORNEYS FLORIDA ,BEST CRIMINAL LAWYER IN ARIZONASTRUCTURED ANNUITY SETTLEMENT,ASBESTOS LAWYERS,NUNAVUT CULTURE,DAYTON FREIGHT LINES ,Bextra Bankruptcy Dental Plan Private JetMundial Football DONATE CAR TO CHARITY CALIFORNIA FIFA World Cup,DONATE CAR FOR TAX CREDIT, and DONATE CARS IN MA,DONATE YOUR CAR SACRAMENTO,HOW TO DONATE A CAR IN CALIFORNIA, SELL ANNUITY PAYMENT and DONATE YOUR CAR FOR KIDS,ASBESTOS LAWYERS pero for you STRUCTURED ANNUITY SETTLEMENT ,ANNUITY SETTLEMENTS, CAR INSURANCE QUOTES COLORADO and future now NUNAVUT CULTURE and pero mas aya del visita DAYTON FREIGHT LINES and Mesothelioma law firm HARDDRIVE DATA RECOVERY SERVICES,Selling annuity payments for cash,Sell my structured settlement,Sell structured settlement,Structured settlement,Structured settlement companies,Sell my annuity payments lump sum,Car accident lawyer Denver,Accident injury attorneys,Sell my annuity
DONATE A CAR IN MARYLAND Online casino accident attorney san bernardino ONLINECLASSES CAR INSURANCE QUOTES UTAH MESOTHELIOMA LAW FIRM Gas/Electricity Computer science classes online cloud identity and access management Dallas mesothelioma attorneys World Trade Center Footage criminal defense attorneys florida Better conferencing calls ANNUITY SETTLEMENT Mesothelioma Law Firm how to donate a car in california AUTO ACCIDENT ATTORNEY Donate Car To Charity CALIFORNIA injury lawyer houston tx mesothelioma lawyer texas cheap car insurance in virginia Casino wisconsin mesothelioma attorney phd in counseling education what is structured settlement HOW TO DONATE A CAR IN CALIFORNIA Tech school Social media platforms Mobile casino register free domains Business finance group Best social media platforms for business LOW CREDIT LINE CREDIT CARDS Social media management Data Recovery Raid DONATING USED CARS TO CHARITY small business administration sba Casino reviews Car insurance in South Dakota emergency response plan ppt CHEAP CAR INSURANCE IN VIRGINIA structured annuity settlement Psychic for Free Social media campaigns How to Donate A Car in California CAR DONATE Best Seo company Royalty Free Images Stock Dedicated Hosting Dedicated Server Hosting structured settlements annuities personal injury law firm Make money online Australia orlando criminal attorney BEST CRIMINAL LAWYER IN ARIZONA Italian cooking school Motor Replacements DUI lawyer Hire php programmers Nunavut culture dallas mesothelioma attorneys Live casino buyer of structured settlement annuity saskatchewan auto insurance Nunavut Culture mesothelioma attorney assistance accident car florida lawyer Hire php developers Best social media platforms hair removal washington dc Webex Costs domain yahoo Adobe illustrator classes Social media strategies Cheap Domain Registration Hosting life insurance co lincoln california motorcycle accident lawyer Learning adobe illustrator Donate Cars in MA auto accident attorney Forensics Online Course business voip solutions anti spam appliance Psd to WordPress motorcycle lawyer los angeles Dwi lawyer Donate car to charity California mesothelioma attorneys california tucson car accident attorney Criminal lawyer data recovery raid car insurance quotes Php programmers for hire Bankruptcy lawyer Php programmers Service business software mesothelioma law suit DONATING A CAR IN MARYLAND Criminal defense lawyer cash out structured settlement Donating a Car in Maryland injury lawyers west palm beach online motor insurance quotes Hire php developer Car Insurance in South Dakota Auto Mobile Insurance Quote annuity payment workers compensation lawyer los angeles donate your car for money la personal injury lawyer Structures Annuity Settlement Seo company Royalty free images stock florida car insurance company car insurance quotes colorado cheap domain registration hosting Low Credit Line Credit Cards Donate your car for kids Seo companies WordPress themes for designers New social media platforms personal injury attorney ocala fl maritime lawyer houston mesothelioma claims buying an annuity calculator pharmacist jobs in chicago WEBEX COSTS royalty free images stock benchmark lending Seo services average mesothelioma settlement Car Insurance Quotes MN Social media platforms for business mesotheolima Best Criminal Lawyers in Arizona Online Motor Insurance Quotes ASBESTOS LAWYERS Custom WordPress theme designer email bulk service CRIMINAL DEFENSE ATTORNEYS FLORIDA Hard drive Data Recovery Services mesothelioma survival rates Claim Register Free Domains Business management software Custom Christmas cards NEUSON Mortgage Adviser Online Christmas cards selling annuity DONATE YOUR CAR FOR MONEY Photo Christmas cards Donate Your Car for Kids WordPress hosting motorcycle accident attorney sacramento Massage School Dallas Texas Psd to html Social media examiner mesothelioma help illinois law lemon Html email boca raton personal injury attorney Business VOIP Solutions student loan consolidation program Christmas cards Proud Italian cook refinance with poor credit WordPress theme designers mesothelioma charities Donate a Car in Maryland better conferencing calls business administration masters FORENSICS ONLINE COURSE virtual data rooms business email web hosting Asbestos Lawyers Paperport promotional code att call conference Online Classes Social media tools DONATE OLD CARS TO CHARITY Injury Lawyers CHEAP DOMAIN REGISTRATION HOSTING Life Insurance Co Lincoln Donate Car to Charity California Donate Car for Tax Credit WebEx costs purchase structured settlements Donate Your Car Sacramento Sell Annuity Payment world trade center footage Life insurance co Lincoln Online College Course Cheap auto insurance in VA auto insurance cost by state auto accident attorney Torrance Attorney DAYTON FREIGHT LINES Car Insurance Quotes Colorado Neuson compare life assurance Annuity Settlements Dayton Freight Lines mesothelioma attorney florida Online Criminal Justice Degree buy gift card PSYCHIC FOR FREE sell your structured settlement payments diagnosed with mesothelioma selling structured settlement Donate Cars Illinois