我可以用CSS3应用多种背景颜色吗?

rhfm7lfc  于 2022-12-24  发布在  CSS3
关注(0)|答案(6)|浏览(230)

我知道如何使用CSS3指定多个背景图像,并使用不同的选项修改它们的显示方式。
目前我有一个<div>,它需要有一个不同的颜色约30%的宽度在左侧:

div#content {
  background: url("./gray.png") repeat-y, white;
  background-size: 30%;
}

除了加载完全灰色的图像,我如何指定颜色,并且不使用额外的<div>

35g0bw71

35g0bw711#

是的,这是可能的!你可以使用许多颜色和图像,因为你的愿望,这里是正确的方式:

body{
/* Its, very important to set the background repeat to: no-repeat */
background-repeat:no-repeat; 

background-image:  
/* 1) An image              */ url(https://placeimg.com/640/100/nature/John3-16), 
/* 2) Gradient              */ linear-gradient(to right, RGB(0, 0, 0), RGB(255, 255, 255)), 
/* 3) Color(using gradient) */ linear-gradient(to right, RGB(110, 175, 233), RGB(110, 175, 233));

background-position:
/* 1) Image position        */ 0 0, 
/* 2) Gradient position     */ 0 100px,
/* 3) Color position        */ 0 130px;

background-size:  
/* 1) Image size            */ 640px 100px,
/* 2) Gradient size         */ 100% 30px, 
/* 3) Color size            */ 100% 30px;
}
lokaqttq

lokaqttq2#

你真的不能-背景色应用于整个元素背景。保持它们简单。
你可以定义一个带有清晰颜色边界的CSS渐变作为背景,例如:

background: -webkit-linear-gradient(left, grey, grey 30%, white 30%, white);

但目前只有少数浏览器支持这种功能。
(See还有http://www.webkit.org/blog/1424/css3-gradients/,用于解释CSS3梯度,包括锐利的颜色边界技巧。)

vlju58qv

vlju58qv3#

您可以根据需要使用任意多的颜色和图像。
请注意,渲染背景图像的优先级是FILO,第一个指定的图像位于顶层,最后一个指定的图像位于底层(请参见代码段)。

#composition {
    width: 400px;
    height: 200px;
    background-image:
        linear-gradient(to right, #FF0000, #FF0000), /* gradient 1 as solid color */
        linear-gradient(to right, #00FF00, #00FF00), /* gradient 2 as solid color */
        linear-gradient(to right, #0000FF, #0000FF), /* gradient 3 as solid color */
        url('http://lorempixel.com/400/200/'); /* image */
    background-repeat: no-repeat; /* same as no-repeat, no-repeat, no-repeat */
    background-position:
        0 0, /* gradient 1 */
        20px 0, /* gradient 2 */
        40px 0, /* gradient 3 */
        0 0; /* image position */
    background-size:
        30px 30px,
        30px 30px,
        30px 30px,
        100% 100%;
}
<div id="composition">
</div>
9jyewag0

9jyewag04#

在这个LIVE DEMO中,我已经通过使用:before css选择器实现了这一点,它看起来工作得很好。

.myDiv  {
position: relative; /*Parent MUST be relative*/
z-index: 9;
background: green;
    
/*Set width/height of the div in 'parent'*/    
width:100px;
height:100px;
}


.myDiv:before {
content: "";
position: absolute;/*set 'child' to be absolute*/
z-index: -1; /*Make this lower so text appears in front*/
   
    
/*You can choose to align it left, right, top or bottom here*/
top: 0; 
right:0;
bottom: 60%;
left: 0;
    
    
background: red;
}
<div class="myDiv">this is my div with multiple colours. It work's with text too!</div>

我想我会添加这个,因为我觉得它可以工作得很好的百分比栏/视觉水平的东西。
这也意味着如果没有必要,您不必创建多个div,并保持此页面最新

jvidinwx

jvidinwx5#

您只能使用一种颜色,但尽可能多的图像,你想要的,这里是格式:

background: [ <bg-layer> , ]* <final-bg-layer>

第一个月
<final-bg-layer> = <bg-image> || <bg-position> [ / <bg-size> ]? || <repeat-style> || <attachment> || <box>{1,2} || <background-color>
background: url(image1.png) center bottom no-repeat, url(image2.png) left top no-repeat;
如果你需要更多的颜色,做一个纯色的图像并使用它。我知道这不是你想听到的,但我希望它能有所帮助。
格式来自http://www.css3.info/preview/multiple-backgrounds/

pkmbmrz7

pkmbmrz76#

如果有人需要一个不同颜色的CSS背景重复水平条纹,这里是我如何设法实现这一点:

body {
  font-family: 'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  font-size: 13px;
}

.css-stripes {
  margin: 0 auto;
  width: 200px;
  padding: 100px;
  text-align: center;
  /* For browsers that do not support gradients */
  background-color: #F691FF;
  /* Safari 5.1 to 6.0 */
  background: -webkit-repeating-linear-gradient(#F691FF, #EC72A8);
  /* Opera 11.1 to 12.0 */
  background: -o-repeating-linear-gradient(#F691FF, #EC72A8);
  /* Firefox 3.6 to 15 */
  background: -moz-repeating-linear-gradient(#F691FF, #EC72A8);
  /* Standard syntax */
  background-image: repeating-linear-gradient(to top, #F691FF, #EC72A8);
  background-size: 1px 2px;
}
<div class="css-stripes">Hello World!</div>

JSfiddle

相关问题