Suporte a navegadores antigos
Se o suporte a navegadores mais antigos é obrigatório, então você não pode usar vários planos de fundo ou gradientes, provavelmente vai querer fazer algo assim em um div
elemento sobressalente :
#background {
position: fixed;
top: 0;
left: 0;
width: 50%;
height: 100%;
background-color: pink;
}
Exemplo: http://jsfiddle.net/PLfLW/1704/
A solução usa uma div extra fixa que preenche metade da tela. Como é fixo, ele permanecerá na posição mesmo quando os usuários rolarem. Você pode ter que mexer com alguns índices z depois, para garantir que seus outros elementos estejam acima da div de segundo plano, mas não deve ser muito complexo.
Se você tiver problemas, verifique se o restante do conteúdo tem um índice z maior que o elemento background e você deve estar pronto.
Navegadores modernos
Se os navegadores mais recentes são sua única preocupação, existem alguns outros métodos que você pode usar:
Gradiente linear:
Esta é definitivamente a solução mais fácil. Você pode usar um gradiente linear na propriedade background do corpo para uma variedade de efeitos.
body {
height: 100%;
background: linear-gradient(90deg, #FFC0CB 50%, #00FFFF 50%);
}
Isso causa um corte rígido de 50% para cada cor, portanto, não há um "gradiente" como o nome indica. Tente experimentar a peça "50%" do estilo para ver os diferentes efeitos que você pode alcançar.
Exemplo: http://jsfiddle.net/v14m59pq/2/
Vários fundos com tamanho de fundo:
Você pode aplicar uma cor de plano de fundo ao html
elemento e, em seguida, aplicar uma imagem de plano de fundo ao body
elemento e usar a background-size
propriedade para defini-la como 50% da largura da página. Isso resulta em um efeito semelhante, mas só seria realmente usado em gradientes se você estiver usando uma imagem ou duas.
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;
}
Exemplo: http://jsfiddle.net/6vhshyxg/2/
NOTA EXTRA: Observe que os elementos html
e body
são definidos height: 100%
nos últimos exemplos. Isso é para garantir que, mesmo que seu conteúdo seja menor que a página, o plano de fundo seja pelo menos a altura da janela de exibição do usuário. Sem a altura explícita, o efeito de plano de fundo será reduzido apenas no conteúdo da página. Também é apenas uma boa prática em geral.
linear-gradient
ponto de corte rígido também funciona para pixels:background: linear-gradient(90deg, #FFC0CB 225px, #00FFFF 0, #00FFFF 100%);
background: linear-gradient(90deg, #FFC0CB 25%, #00FFFF 0);
.Solução simples para obter o fundo "dividido em dois":
Você também pode usar graus como direção
fonte
Você pode fazer uma distinção difícil em vez de gradiente linear colocando a segunda cor em 0%
Por exemplo,
Gradiente -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 80%);
Distinção difícil -
background: linear-gradient(80deg, #ff0000 20%, #0000ff 0%);
fonte
Portanto, esta é uma pergunta muito antiga que já tem uma resposta aceita, mas acredito que essa resposta teria sido escolhida se tivesse sido publicada há quatro anos.
Eu resolvi isso puramente com CSS e sem elementos de DOM EXTRA! Isso significa que as duas cores são puramente isso, apenas as cores de fundo de UM ELEMENTO, não a cor de fundo de duas.
Usei um gradiente e, como ajusto as cores para ficarem tão próximas, parece que as cores são distintas e que elas não se misturam.
Aqui está o gradiente na sintaxe nativa:
A cor
#74ABDD
começa em0%
e ainda está#74ABDD
em49.9%
.Então, forço o gradiente a mudar para a próxima cor dentro
0.2%
da altura dos elementos, criando o que parece ser uma linha muito sólida entre as duas cores.Aqui está o resultado:
E aqui está o meu JSFiddle!
Diverta-se!
fonte
background: repeating-linear-gradient(var(--grayLight), var(--grayLight) 430px, rgba(0,0,0,0) 201px, rgba(0,0,0,0) 100%);
isso deve funcionar com css puro.
testado apenas no Chrome.
fonte
Em um projeto anterior que tinha que oferecer suporte ao IE8 +, consegui isso usando uma imagem codificada no formato de URL de dados.
A imagem tinha 2800x1px, metade da imagem em branco e metade transparente. Funcionou muito bem.
Você pode vê-lo trabalhando aqui JsFiddle . Espero que possa ajudar alguém;)
fonte
Eu usei
:after
e está funcionando em todos os principais navegadores. por favor verifique o link. só precisa ter cuidado com o índice z, pois depois está tendo posição absoluta.ligação violino
fonte
Você pode usar o
:after
pseudo-seletor para conseguir isso, embora eu não tenha certeza da compatibilidade com versões anteriores desse seletor.Eu usei isso para ter dois gradientes diferentes em um plano de fundo da página.
fonte
Use na sua imagem bg
Divisão vertical
Divisão horizontal
Exemplo
fonte
background-position: center center
Uma das maneiras de implementar seu problema e inserir uma única linha dentro de sua div:
Aqui está um código de demonstração e mais opções (horizontal, diagonal etc.), você pode clicar em "Executar trecho de código" para vê-lo ao vivo.
fonte
A opção mais à prova de balas e semanticamente correta seria usar pseudoelemento de posição fixa (
::after
ou::before
). Usando esta técnica, não se esqueça de definir osz-index
elementos dentro do contêiner. Lembre-se também de que acontent:""
regra para o pseudoelemento é necessária, caso contrário não será renderizada.Exemplo ao vivo: https://jsfiddle.net/xraymutation/pwz7t6we/16/
fonte
fonte
Este é um exemplo que funcionará na maioria dos navegadores.
Basicamente, você usa duas cores de plano de fundo, a primeira começando de 0% e terminando em 50% e a segunda começando de 51% e terminando em 100%
Estou usando a orientação horizontal:
Para diferentes ajustes, você pode usar http://www.colorzilla.com/gradient-editor/
fonte
se você deseja usar
linear-gradient
com 50% de altura:fonte