Поскольку вы не просили избежать решения JS/jQuery, вот какой способ (который может быть уточнен для лучшего результата).
1 - я создал маску, содержащую ваш дублированный фон:
HTML
<div class="maskContainer">
<div class="mask">
<div class="background"></div>
</div>
</div>
CSS
.background {
position: absolute;
display: inline-block;
background: repeating-linear-gradient(
45deg,
rgba(0, 0, 0, 0.2),
rgba(0, 0, 0, 0.2) 10px,
rgba(0, 0, 0, 0.3) 10px,
rgba(0, 0, 0, 0.3) 20px
);
top:0px;
}
.maskContainer{
z-index: 2;
position:absolute;
top:0px;
left:0px;
width:100%;
}
.mask{
position:relative;
top:200px;
overflow:hidden;
padding: 2em;
border: 1px solid #afa;
margin: 0 1em;
}
JS
var containerWidth = $(".container").width();
var containerHeight = $(".container").height();
$(".background").css({
'width':containerWidth+'px',
'height':containerHeight+'px',
});
2 - Эта маска получает размер и положение нужного объекта с JQuery (и некоторые другие материалы, чтобы иметь дело с объектом заполнения/края):
JS
var selectedObjWidth = $(".object.selected").width();
var selectedObjHeight = $(".object.selected").height();
var selectedObjPosX = $(".object.selected").position().left;
var selectedObjPosY = $(".object.selected").position().top;
$(".mask").css({
'width':selectedObjWidth+'px',
'height':selectedObjHeight+'px',
'left':selectedObjPosX+'px',
'top':selectedObjPosY+'px'
});
var maskMargin = $(".mask").css("margin-left");
maskMargin = maskMargin.split("px");
var realMaskMargin = maskMargin[0];
var maskPosX = $(".mask").position().left+parseInt(realMaskMargin)+1;
$(".background").css({
'left':'-'+maskPosX+'px'
});
Реферат:
Маска занимает позицию вашего объекта, скрывает ее с помощью дубликата фона вашего контейнера (который переведен влево, чтобы сохранить ту же позицию как ваш исходный фон).
EG:
Объект 150px оставил
Маска 150px осталось слишком
фона также 150px влево, потому что он находится в маске, и я хочу, чтобы это было выровненный с основным контейнером, поэтому я прошу, чтобы он остался на -150 пикселей. Таким образом, маска пытается воспроизвести исходный фон, переопределяя его.
Теперь мы можем играть с г-индекса, чтобы скрыть/показать конкретные случайные линии
Вот ваш updated Codepen
Вы не можете положить что-нибудь под фоном (по понятным причинам), так что сомнительно, вы могли бы найти что-нибудь, что будет работать на основе существующей структуры, –
@Paulie_D Удивительно, но кажется, что является чистым решением CSS. – vals