Soporte de navegador antiguo
Si la compatibilidad con el navegador anterior es imprescindible, por lo que no puede utilizar múltiples fondos o gradientes, es probable que desee hacer algo como esto en un div
elemento adicional :
#background {
position: fixed;
top: 0;
left: 0;
width: 50%;
height: 100%;
background-color: pink;
}
Ejemplo: http://jsfiddle.net/PLfLW/1704/
La solución utiliza un div fijo adicional que llena la mitad de la pantalla. Como está arreglado, permanecerá en posición incluso cuando los usuarios se desplacen. Es posible que tenga que jugar con algunos índices z más tarde, para asegurarse de que sus otros elementos estén por encima del div de fondo, pero no debería ser demasiado complejo.
Si tiene problemas, solo asegúrese de que el resto de su contenido tenga un índice z más alto que el elemento de fondo y que esté listo para comenzar.
Navegadores modernos
Si los navegadores más nuevos son su única preocupación, existen otros métodos que puede usar:
Gradiente lineal:
Esta es definitivamente la solución más fácil. Puede usar un degradado lineal en la propiedad de fondo del cuerpo para una variedad de efectos.
body {
height: 100%;
background: linear-gradient(90deg, #FFC0CB 50%, #00FFFF 50%);
}
Esto provoca un corte duro al 50% para cada color, por lo que no hay un "gradiente" como su nombre lo indica. Intente experimentar con la pieza "50%" del estilo para ver los diferentes efectos que puede lograr.
Ejemplo: http://jsfiddle.net/v14m59pq/2/
Múltiples fondos con tamaño de fondo:
Puede aplicar un color de fondo al html
elemento, y luego aplicar una imagen de fondo al body
elemento y usar la background-size
propiedad para establecerlo en el 50% del ancho de la página. Esto da como resultado un efecto similar, aunque en realidad solo se usaría sobre gradientes si está utilizando una o dos imágenes.
html {
height: 100%;
background-color: cyan;
}
body {
height: 100%;
background-image: url('http://i.imgur.com/9HMnxKs.png');
background-repeat: repeat-y;
background-size: 50% auto;
}
Ejemplo: http://jsfiddle.net/6vhshyxg/2/
NOTA ADICIONAL: Observe que los elementos html
y body
están configurados height: 100%
en los últimos ejemplos. Esto es para asegurarse de que, incluso si su contenido es más pequeño que la página, el fondo tendrá al menos la altura de la vista del usuario. Sin la altura explícita, el efecto de fondo solo se reducirá hasta el contenido de su página. También es solo una buena práctica en general.
linear-gradient
corte duro también funciona para píxeles:background: linear-gradient(90deg, #FFC0CB 225px, #00FFFF 0, #00FFFF 100%);
background: linear-gradient(90deg, #FFC0CB 25%, #00FFFF 0);
.Solución simple para lograr el fondo "dividido en dos":
También puedes usar grados como dirección
fuente
Puede hacer una distinción difícil en lugar de un degradado lineal poniendo el segundo color a 0%
Por ejemplo,
Degradado -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 80%);
Distinción dura -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 0%);
fuente
Entonces, esta es una pregunta muy antigua que ya tiene una respuesta aceptada, pero creo que esta respuesta habría sido elegida si se hubiera publicado hace cuatro años.
¡Resolví esto puramente con CSS y SIN ELEMENTOS DE DOM EXTRA! Esto significa que los dos colores son puramente eso, solo colores de fondo de UN ELEMENTO, no el color de fondo de dos.
Utilicé un degradado y, debido a que configuré el color se detiene tan estrechamente, parece que los colores son distintos y no se mezclan.
Aquí está el gradiente en la sintaxis nativa:
El color
#74ABDD
comienza en0%
y todavía está#74ABDD
en49.9%
.Luego, fuerzo el gradiente para cambiar a mi próximo color dentro
0.2%
de la altura de los elementos, creando lo que parece ser una línea muy sólida entre los dos colores.Aquí está el resultado:
Y aquí está mi JSFiddle!
¡Que te diviertas!
fuente
background: repeating-linear-gradient(var(--grayLight), var(--grayLight) 430px, rgba(0,0,0,0) 201px, rgba(0,0,0,0) 100%);
Esto debería funcionar con CSS puro.
probado solo en Chrome.
fuente
En un proyecto anterior que tenía que soportar IE8 + y lo logré usando una imagen codificada en formato de URL de datos.
La imagen era 2800x1px, la mitad de la imagen blanca y la otra mitad transparente. Funcionó bastante bien.
Puedes verlo trabajando aquí JsFiddle . Espero que pueda ayudar a alguien;)
fuente
Lo he usado
:after
y funciona en todos los principales navegadores. por favor revise el enlace. solo hay que tener cuidado con el índice z ya que después está teniendo posición absolutaenlace de violín
fuente
Podrías usar el
:after
pseudo-selector para lograr esto, aunque no estoy seguro de la compatibilidad con ese selector.He usado esto para tener dos gradientes diferentes en el fondo de una página.
fuente
Usar en tu imagen bg
División vertical
División horizontal
Ejemplo
fuente
background-position: center center
Una de las formas de implementar su problema para ingresar una sola línea dentro de su div:
Aquí hay un código de demostración y más opciones (horizontal, diagonal, etc.), puede hacer clic en "Ejecutar fragmento de código" para verlo en vivo.
fuente
La opción más a prueba de balas y semánticamente correcta sería utilizar un pseudo-elemento (
::after
o::before
) de posición fija . Con esta técnica, no olvide establecerz-index
elementos dentro del contenedor. Tambiéncontent:""
tenga en cuenta que se necesita esa regla para el pseudo-elemento, de lo contrario no se representará.Ejemplo en vivo: https://jsfiddle.net/xraymutation/pwz7t6we/16/
fuente
fuente
Este es un ejemplo que funcionará en la mayoría de los navegadores.
Básicamente, utiliza dos colores de fondo, el primero comienza en 0% y termina en 50% y el segundo comienza en 51% y termina en 100%
Estoy usando orientación horizontal:
Para diferentes ajustes, puede usar http://www.colorzilla.com/gradient-editor/
fuente
si quieres usar
linear-gradient
con 50% de altura:fuente