Archivo

Posts Tagged ‘css’

Recopilación de tips y enlaces del curso de Diseño web de 2018

31 de enero de 2018 Deja un comentario

Al inicio de 2018 he hecho un curso de Diseño web. Estaba un poco desactualizado. Aquí iré poniendo algunos enlaces «interesantes» que he encontrado en este curso.

Colores

Tipografías

Navegación

Imágenes

Editor de imágenes. https://pixlr.com/

A continuación se representa una relación de estos caracteres especiales y su representación:

Carácter Representación Carácter Representación
< &lt; &euro;
> &gt; ç  &ccedil;
á &aacute;  Ç &Ccedil;
Á &Aacute;  ü &uuml;
é &eacute;  Ü  &Uuml;
É &Eacute;  & &amp;
í &iacute;  ¿ &iquest;
Í &Iacute;  ¡ &iexcl;
ó &oacute;  «  &quot;
Ó &Oacute; · &middot;
ú &uacute;  º  &ordm;
Ú &Uacute; ª  &ordf;
Ú &ntilde; ¬  &not;
Ñ &Ntilde;  © &copy;
 ® &reg;
Categorías: Desarrollo web Etiquetas: , , , , ,

Inicio con Bootstrap

21 de marzo de 2016 Deja un comentario

Se descarga en http://getbootstrap.com/

Está pensado para que las páginas se visualicen sobre todo en dispositivos móviles (mobile first).

Genera 3 carpetas necesarias para todo proyecto Bootstrap:

  • css
  • js
  • fonts

Puedes decargar plantillas en http://bootstrapzero.com/.

Esquema básico de la página

En el HTML, deberemos tener estos tres enlaces:

<!–Bootstrap CSS –>
<link rel=»stylesheet» href=»css/bootstrap.min.css»>
<!–jQuery Al ser para móviles puede ser más interesante tener descargado el jQuery–>
http://js/jquery.min.js
<!–Bootstrap JavaScript –>
http://js/bootstrap.min.js

Al ser un entorno Mobile first, tendremos que corregir la escala y ancho de inicio del dispositivo:
<meta name=»viewport» content=»width=device-width, initial-scale=1″>

La página debe estar dentro de un DIV contenedor que puede ser de dos clases:

  • container (se queda en el centro de la ventana)
  • container-fluid (este se ajusta al ancho de la ventana)

Diseño en grid

Bootstrap utiliza un grid de 12 columnas. Y utiliza 4 distribuciones distintas ordenadas por tamaño de la pantalla:

  • xs
  • sm
  • md
  • lg

Para indicar la distribución dependiendo del tamaño de la pantalla, a cada div le asignaremos clases con el formato: col-xx-n (siendo xx una de las 4 distribuciones y n un número divisor de 12).

Algunos recursos CSS3

12 de marzo de 2016 Deja un comentario

Impress.js una librería Javascript para hacer presentaciones a lo prezi.com

20 de agosto de 2014 Deja un comentario

Siempre me gustaron las presentaciones de prezi.com, mucho mejores que esas cosas hechas en powerpoint y que siempre te parecen feísimas. El problema es que había que pagar.

Ahora, con los potentes navegadores web, puedes usar Impress.js que te sirve para lo mismo. Sólo necesitas un navegador medio actualizado y que soporte CSS3. En mi PC con Firefox va de escándalo (agosto-2014).

El creador es @bartaz. Es la primera persona a la que le hago un watch en github.

Para ver una demo y que veas que es como prezi.com (bueno, mejor, porque utiliza el 3D):

Impress.js

 

Puedes moverte utilizando la barra espaciadora o las flechas derecha/izquierda.

 

En el Github encontrarás tutoriales y más ejemplos.

Comprobar igualdad en campos de contraseña de un formulario utilizando Javascript

Nos imaginamos que tenemos un formulario con varios campos para un usuario, por ejemplo.

Además del nombre y demás datos, tenemos un par de campos para que introduzca la contraseña. Lo tenemos dos veces para obligarle a que repita la contraseña para que no haya errores al teclear.

Queremos que cuando se hayan introducido correctamente las contraseñas, nos habilite el botón para guardar, así como que desaparezca un mensaje que nos dice que nuestras contraseñas no coinciden.

Deberíamos crear una función para comprobar la clave parecida a la siguiente:

function comprobarClave(){
 var clave1 ="";
 var clave2 ="";
 
 clave1 = document.getElementById("contra1").value;
 clave2 = document.getElementById("contra2").value;
 
 if ((clave1.length>=6) && (clave2.length>=6)){
   if (clave1 == clave2){
     document.getElementById("guardar").disabled=false;
     document.getElementById("mensajeaviso").hidden=true;
   }
 else{
     document.getElementById("mensajeaviso").hidden=false; 
     document.getElementById("guardar").disabled=true;
   }
 }
 else{
   document.getElementById("guardar").disabled=true;
   document.getElementById("mensajeaviso").hidden=false; 
 }
}

.

El anterior planteamiento nos obliga a tener un botón con ID=»guardar» que será el que se habilite o no. Recuerda utilizar las CSS correctamente para mostrarlo:

#formulario input:disabled{
color: #999;
}

#formulario input:enabled{
color: black;
}

También he puesto un texto, identificado con «mensajeaviso» que aparecerá y desaparecerá.

Cuándo se llama a esta función?

Para llamarla, utilizaremos el evento onkeyup de cada uno de los dos input con id contra1 y contra2.

Se utiliza onkeyup porque este evento surge cuando el usuario deja de pulsar una tecla. Así, de esta manera conseguimos que la última tecla pulsada esté en el value del input.

Quedaría así:

<input type=»password» name=»contra1″ id=»contra1″ onkeyup=»comprobarClave();»>

Por cierto, de esta manera conseguimos en el lado del cliente que sólo se pueda pulsar si los requisitos de las contraseñas son los correctos. En el lado servidor también deberías hacer esta misma comprobación. Pronto subo el capítulo 2 de este tema, haciendo la comprobación con PHP.

Listas de elementos con guiones

En esta página vimos cómo modificar los marcadores de las listas desordenadas (UL), ya sea con disc, square, circle, etc.

Pero, ¿y una lista simple con guiones? Tal como esta:

– Zaidín

– Chana

– Albaicín

¿Cómo se crearía? El guión no existe. Más allá, y si quiero que sea un carácter concreto siempre, repitiéndose.

> Almería

> Granada

> Jaén

Pues se debe hacer lo siguiente mediante CSS:

    .listaguion li{list-style-type: none}
    .listaguion li:before{content: "-"}

Usando :before le decimos que justo antes del contenido, aparezca el guión.

El problema de esto es la sangría, no sale «bonito» si el contenido de los elementos te ocupa más de una línea. Claro, para solucionar esto, le podrías poner en el before «-   » y luego en el li meter un text-indent: -15px; para que la sangría fuera correcta.

Quizás la mejor opción sea entonces utilizar una imagen.

Cabecera básica de un documento HTML5

19 de febrero de 2014 Deja un comentario

<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>Título de la página</title>
<meta name=»author» content=»Autor de la página»>
<meta name=»creator» content=»Creador de la página»>
<meta name=»description» content=»Descripción de la página web»>
<meta name=»keywords» content=»etiqueta1, etiqueta2,…»>
<meta name=»robots» content=»INDEX,FOLLOW»>
<meta name=»viewport» content=»width=device-width, initial-scale=1, maximum-scale=1″>

<meta name=»geo.placename» content=»Granada»>
<meta name=»geo.position» content=»37.19063;-3.612381″>
<meta name=»geo.region» content=»ES-GR»>
<meta name=»ICBM» content=»37.19063,-3.612381″>
<meta name=»geo.country» content=»ES»>

<link rel=»icon» type=»image/vnd.microsoft.icon» href=»favicon.ico»>

<script type=»text/javascript»>

</script>
<style type=»text/css»>

</style>

</head>

Bootstrap

27 de diciembre de 2013 Deja un comentario

http://getbootstrap.com/

En esta página se encuentra un framework que permite hacer aplicaciones web rápidamente. Sobre todo destacan sus botones y menús, así como los grids.

bootstrapTiene algunos ejemplos. Como el siguiente, con su barra de navegación y sus columnas con contenido.

bootstrap2

La página online de Red Eléctrica Española lo utiliza. http://www.ree.es

    <link href="css/bootstrap.min.css" rel="stylesheet">
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="https://code.jquery.com/jquery.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
Categorías: Desarrollo web Etiquetas: , , , ,

Maquetando de forma no rectangular

12 de noviembre de 2013 Deja un comentario

En el siguiente enlace he encontrado cómo montar Layouts no rectangulares con CSS Shapes.

http://sarasoueidan.com/blog/css-shapes/index.html

Categorías: Desarrollo web Etiquetas: , ,

Ejercicio web completa

15 de noviembre de 2012 Deja un comentario

Intentaremos hacer una web parecida a la siguiente:

Puedes utilizar el siguiente esqueleto:

<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="pagina.css"/>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
         <script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false">
        </script>
        <script type="text/javascript" src="mimapa.js"></script>
        <!-- La anterior línea la sustituiríamos por un include de PHP
            si los mapas de Google Maps API 3 van a leer de MySQL -->        
    </head>
    <body>  <!-- Si utilizamos Google Maps hay que poner onload="inicializar() dentro de la etiqueta body"-->
        <div id="principal">
            <div id="banner">
                <?php
                include ("banner.inc");
                ?>
            </div>
            <div id="menu">
                <?php
                include("menu.inc");
                ?>
            </div>
            <div id="content">
                <div id="contenido">
                    <?php
                    include("paginaprincipal.php");
                    ?>
                </div>
                <div id="mapa">
                    <?php
                    include("mapaderecha.php");
                    ?>
                </div>
            </div>
            <div id="pie">
                <?php
                include("pie.inc");
                ?>
            </div>            
        </div>        
    </body>
</html>

Continuamos desarrollando. Para ver como va quedando todo, creamos un fichero de CSS que nos muestre el aspecto de las capas, luego cambiaremos los colores:

PAGINA.CSS

*{
    margin-top:0px;
    margin-bottom:0px;
    padding-top:0px;
    padding-bottom:0px;
}
body {
    text-align:center;
    margin: 0 auto;
    padding:0px;
    background: #999999;
}
#principal{
    text-align:left;
    margin: 0 auto;
    padding:0px;
    background: white;
    width: 850px;
}
#banner{
    background: url('imagenes/desert.jpg')  orange;
    height: 150px;
}
#menu{
    background: green;
}
#content{
    width:100%;
    float:left;
    min-height: 500px;
    background:white;
}
#contenido{
    background: blue;
    width:650px;
    float:left;
    min-height: 500px;
}
#mapa{
    background: yellow;
    width:200px;
    float:right;
}
#pie{
    background: red;
}


/* ***************** CSS PARA MAPA DE CONTACTOS ************************ */
#map_canvas{
    margin: 0 auto;
    padding: 0 auto;
    width:200px;
    height:400px;
}
#mapa h1{
    color:red;
    font-size: 18px;
    text-align: center;
}

Esquema del sitio

MENU.INC

<ul>
<li><a href=»#»>Nuevo contacto</a></li>
<li><a href=»paginalistado.php»>Listado</a></li>
<li><a href=»#»>Borrar</a></li>
<li><a href=»#»>Búsqueda</a></li>
</ul>

PAGINAPRINCIPAL.PHP

<h1>Contenido principal</h1>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do 
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim 
ad minim veniam, quis nostrud exercitation ullamco laboris nisi
 ut aliquip ex ea commodo consequat. Duis aute irure dolor in
  reprehenderit in voluptate velit esse cillum dolore eu fugiat
   nulla pariatur. Excepteur sint occaecat cupidatat non proident,
    sunt in culpa qui officia deserunt mollit anim id est laborum.

BANNER.INC

&nbsp;
<h1>Mi página personal</h1>

PIE.INC

<ul>
    <li><a href="#">Contacto</a></li>
    <li><a href="#">Como llegar</a></li>
    <li><a href="#">Copy right</a></li>
    
</ul>

MAPADERECHA.PHP

<h1>Mapa de mis contactos</h1>
<div id="map_canvas">&nbsp;</div>

MAPA.INC

<script type="text/javascript">
    function inicializar(){        
        var ventana;
        var latitudlongitud = new google.maps.LatLng(37.206167,-3.614254);
        var opciones = {
            zoom: 12,
            center: latitudlongitud,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var mapa = new google.maps.Map(document.getElementById("map_canvas"),opciones);
        
        <?php
        // Conecta con BD y ejecutar consulta
            // Conectar con el Servidor
    $link = mysql_connect("localhost", "root", "acrear2012") or die ("No puedo conectarme con el servidor");
    // Usar la BD
    mysql_select_db("agenda",$link) or die ("No puedo abrir la BD");
    // Hacer la consulta
    $consulta= "SELECT * FROM agenda"; // Consulta por defecto
    $resultado = mysql_query($consulta, $link) or die ("No puedo ejecutar la consulta");
    // Voy leyendo fila a fila
    while ($fila = mysql_fetch_array($resultado)){
        $latitud=$fila['X'];
        $longitud=$fila['Y'];
        $id=$fila['id'];
        $nombrecompleto= $fila['nombre'].' '.$fila['apellido1'].' '.$fila['apellido2'];
        $direccion=$fila['direccion'];
        $provincia=$fila['provincia'];
        $telefono=$fila['telefono'];
        $correo=$fila['email'];
        $fecha=$fila['fechanacimiento'];   
  echo "var coordenadas = new google.maps.LatLng($latitud,$longitud);
        var marcador$id = new google.maps.Marker({
            position: coordenadas,
            map: mapa,
            title: '$nombrecompleto',
            icon: 'imagenes/statue-2.png'
        });
        var cadena$id='<div>'
        +'<h1>$nombrecompleto</h1>'
        +'<p>$direccion ($provincia)</p>'
        +'<p>Teléfono: $telefono</p>'
        +'<p>email: $correo</p>'
        +'<p>Fecha de nacimiento: $fecha</p>'
        +'<p><img src=\"imagenes/pepito.jpg\" alt=\"foto de pepito\" width=50px/></p>'
        +'</div>';
        google.maps.event.addListener(marcador$id, 'click', function() {
          if (ventana) ventana.close();
          ventana = new google.maps.InfoWindow({content: cadena$id});
          ventana.open(mapa,marcador$id);          
        }); 
        ";
    }
    mysql_close($link);
?>
            
        }
    
    
</script>

PAGINALISTADO.PHP

<html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="pagina.css"/>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
         <script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"></script>
         <?php
             include("mapa.inc");
         ?>
        <!-- <script type="text/javascript" src="mimapa.js"></script>
        La anterior línea la sustituiríamos por un include de PHP
            si los mapas de Google Maps API 3 van a leer de MySQL -->        
    </head>
    <body onload="inicializar()">  <!-- Si utilizamos Google Maps hay que poner onload="inicializar() dentro de la etiqueta body"-->
        <div id="principal">
            <div id="banner">
                <?php
                include ("banner.inc");
                ?>
            </div>
            <div id="menu">
                <?php
                include("menu.inc");
                ?>
            </div>
            <div id="content">
                <div id="contenido">
                    <?php
                    include("provincia.inc");
                    ?>
                </div>
                <div id="mapa">
                    <?php
                    include("mapaderecha.php");
                    ?>
                </div>
            </div>
            <div id="pie">
                <?php
                include("pie.inc");
                ?>
            </div>            
        </div>        
    </body>
</html>

PROVINCIA.INC

<SCRIPT LANGUAGE=’JavaScript’>
<!–
function actualizaPagina ()
{
i = document.forms.formulario.prov.selectedIndex;
categoria = document.forms.formulario.prov.options[i].value;
window.location = ‘paginalistado.php?prov=’ + categoria;
}
// –>
</SCRIPT>

<h1>Todos mis contactos</h1>
<form name=»formulario» action=»paginalistado.php» method=»get»>
Mostrar contactos por provincia:
<select name=»prov» onchange=’actualizaPagina()’>

<?php
if (!isset($_GET[‘prov’])){ // Si yo he escrito listadoporprovincia.php sin parámetros
echo «<option value=’Todas’ selected>Todas</option>»;
}
elseif ($_GET[‘prov’]==»Todas»){
echo «<option value=’Todas’ selected>Todas</option>»;
}
else{
echo «<option value=’Todas’>Todas</option>»;
}

// Conectar con el Servidor
$link = mysql_connect(«localhost», «root», «acrear2012»)
or die («No puedo conectarme con el servidor»);
// Usar la BD
mysql_select_db(«agenda»,$link)
or die («No puedo abrir la BD»);
// Hacer la consulta
$consulta= «SELECT provincia FROM agenda GROUP BY provincia»;
$resultado = mysql_query($consulta, $link)
or die («No puedo ejecutar la consulta»);
// Voy leyendo fila a fila

while ($fila = mysql_fetch_array($resultado)){
echo «<option value='».$fila[‘provincia’].»‘»;
if (isset($_GET[‘prov’]))
if ($_GET[‘prov’]==$fila[‘provincia’])
echo » selected»;
echo «>».$fila[‘provincia’].»</option>\n»;
}
mysql_close($link);
?>
</select>

</form>
<table>
<tr>
<th>NOMBRE</th><th>DIRECCI&Oacute;N</th><th>TEL&Eacute;FONO</th><th>EMAIL</th><th>PROVINCIA</th>
</tr>
<?php
// Conectar con el Servidor
$link = mysql_connect(«localhost», «root», «acrear2012»)
or die («No puedo conectarme con el servidor»);
// Usar la BD
mysql_select_db(«agenda»,$link)
or die («No puedo abrir la BD»);
// Hacer la consulta

if (!isset($_GET[‘prov’]))
$consulta= «SELECT * FROM agenda»;
elseif ($_GET[‘prov’]==»Todas»)
$consulta= «SELECT * FROM agenda»;
else
$consulta=»SELECT * FROM agenda WHERE provincia='».$_GET[‘prov’].»‘»;

$resultado = mysql_query($consulta, $link)
or die («No puedo ejecutar la consulta»);
// Voy leyendo fila a fila
$i=0;
while ($fila = mysql_fetch_array($resultado)){
if ($i%2==0){
echo «<tr>»;
}
else{
echo «<tr id=’naranja’>»;
}
$i++;
// Celda del Nombre completo = Nombre + Apellido1 + Apellido2
echo «<td>».$fila[‘nombre’].» «.$fila[‘apellido1’].» «.$fila[‘apellido2’].»</td>»;
// Celda de la dirección
echo «<td>».$fila[‘direccion’].»</td>»;
// Celda del teléfono
echo «<td>».$fila[‘telefono’].»</td>»;
// Celda del email
echo «<td>».$fila[‘email’].»</td>»;
echo «<td>».$fila[‘provincia’].»</td>»;
echo «</tr>\n»;
}
mysql_close($link);  // Cerrar la conexión

?>
</table>