Как плавно скрыть контент в блоке независимо от фона?
За плавное скрытие отвечает это свойство
background: linear-gradient(to right, transparent, #fff);
Как можно плавно скрывать текст, при этом независимо на каком фоне находится текст?
Фон заранее неизвестен, он может быть любой, меняется постоянно (фон сайта, наведение и тд.)
.item {
display: flex;
align-items: center;
}
.item:nth-child(even) {
background: #f2f2f2;
}
.item:hover {
background: #9f9fff;
}
.item.active {
background: #9fefff;
}
.hiddenend {
display: inline-block;
max-width: 100px;
width: 100%;
overflow: hidden;
position: relative;
}
.hiddenend:after {
content: '';
width: 14px;
height: 100%;
display: block;
background: linear-gradient(to right, transparent, #fff);
position: absolute;
top: 0;
right: 0;
}
<div class="item"><span class="hiddenend">123885.5856257</div>
<div class="item"><span class="hiddenend">123234885.5856857</div>
<div class="item active"><span class="hiddenend">1233885.58457</div>
Ответы (2 шт):
Автор решения: Dias
→ Ссылка
На js например:
const hid = document.querySelectorAll('.hiddenend');
hid.forEach(i => {
const hidbg = window.getComputedStyle(i.parentNode),
spanhid = document.createElement('span');
spanhid.classList.add('hiddenendSpan');
spanhid.style.background = 'linear-gradient(to right, transparent, '+hidbg.backgroundColor+'';
i.append(spanhid);
});
.item {
display: flex;
align-items: center;
background: #fff;
}
.item:nth-child(even) {
background: #f2f2f2;
}
.item:hover {
background: #9f9fff;
}
.item.active {
background: #9fefff;
}
.hiddenend {
display: inline-block;
max-width: 100px;
width: 100%;
overflow: hidden;
position: relative;
}
.hiddenendSpan {
content: '';
width: 20px;
height: 100%;
display: block;
background: linear-gradient(to right, transparent, #fff);
position: absolute;
top: 0;
right: 0;
}
<div class="item"><span class="hiddenend">123885.5856257</div>
<div class="item"><span class="hiddenend">123234885.5856857</div>
<div class="item active"><span class="hiddenend">1233885.58457</div>
Автор решения: TaniaLinn
→ Ссылка
вот. Только поддержка не самая полная, firefox до 48 версии и edge до 14 не поддерживают.
.wrap {
background: gray;
}
.text {
width: 485px;
font-size: 40px;
font-weight: bold;
background: linear-gradient(to right, red, transparent 70%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
<div class="wrap">
<p class="text">Lorem ipsum dolor sit amet.</p>
</div>