Nativescript-Vue Как сделать компонент Transparency to Page, который не повлияет на дочерние элементы

Привет, надеюсь, ты в порядке.

У меня есть проблема, и я не мог ее исправить. Я хочу прикрепить свойство background-image из URL-адреса и добавить непрозрачность с цветом, который не повлияет на детей.

На самом деле все берите непрозрачность, если кто-то может мне помочь, это будет здорово!

Спасибо заранее

Вот мой пример кода:

<template>
    <Page class = "ns-light page">
        <ActionBar :title = "`${actionBarName}`"/>
        <StackLayout orientation = "vertical" style = "text-align: center; margin-top: 5%">
            <Label text = "Tap to play the music" style = "font-weight: bold"/>

            <Image :src = "src" @tap = "playSound" width = "300" style = "margin-top: 5%"/>
        </StackLayout>

    </Page>
</template>

<style scoped>
    ActionBar {
        background-color: #53ba82;
        color: #ffffff;
    }

    .page {
        background: url('~/assets/images/cards/background.png') no-repeat center #53ba82;
        background-size: cover;
        opacity: 0.5;
    }
</style>

Ваш вопрос не ясен. Пожалуйста, подтвердите: у вас установлен background-image на <Page>, и вы хотите разместить полупрозрачный оверлей над background-image, но содержимое должно отображаться над оверлеем. Это верно?

tao 19.12.2020 18:32

Да, на самом деле у меня есть background: url, но я хочу только применить к нему непрозрачность.

Sayf-Eddine 19.12.2020 18:36

Вы не можете применить непрозрачность к слою background-image, не затрагивая его содержимое. opacity применяется ко всему, отображаемому этим элементом. У вас есть два варианта: а) вы изменяете само изображение и делаете его полупрозрачным. б) вместо использования background-image вы используете псевдо (:before или :after), вы позиционируете его абсолютно так, чтобы покрыть весь элемент, и вы даете каждому дочернему элементу z-index значение 1, а псевдо z-индекс равен 0. Если вы нужно, могу привести пример.

tao 19.12.2020 18:42

Для решения б) вы, очевидно, можете поиграть с псевдоэлементом opacity на лету и поместить background-image на него вместо родительского элемента. Весь смысл в том, чтобы поместить background-image на другой элемент, чтобы изменение его непрозрачности не повлияло ни на что другое.

tao 19.12.2020 18:48
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
4
557
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Так что спасибо: Тао, который нашел время, чтобы ответить мне

Попробовав много вещей, я прочитал документацию и узнал, как это сделать!

Проблематично: «Я хочу изображение в качестве фона и прозрачный цвет над изображением».

Я объясню сам, поэтому я попытался применить css background-image и добавить к нему непрозрачность.

  1. opacity

opacity изменит все элементы внутри выбранного вами элемента.

Когда я использовал opacity в Page, он даже изменил непрозрачность изображения, а это было не то, что я искал...

  1. alpha (rgba)

А потом я подумал, что есть alpha = rgba(), и вы можете добиться прозрачности конкретного элемента, так что = «прозрачный цвет над изображением».

Итак, что я сделал, было очень просто, мне нужно было посмотреть, смогу ли я определить класс rgba для одного из дочерних элементов, и я выбрал: GridLayout (контейнер макета).

Поэтому я добавил background-color: rgba(0, 255, 0, 0.1), а затем у меня был цвет с прозрачностью.

И я включил компонент background-image on Page, и это помогло! :D

Я помещу его код со вторым кодом здесь:

  <template>
    <Page class = "ns-light page">
        <ActionBar title = "Audio Mémo Manjak - Accueil"/>
        <GridLayout width = "100%" height = "100%" columns = "*,*,*,*,*"  rows = "auto,auto,auto,auto,auto" class = "layout">
            <StackLayout v-for = "(card, index) of cards" :key = "index" :col = "`${ index % 5 }`" :row = "`${ index / 5 }`">
                <Image :src = "card.src" style = "margin: 30px 15px;" @tap = "onTappedFun(card)"/>
            </StackLayout>
        </GridLayout>
    </Page>
</template>
<style>
    ActionBar {
        background-color: #53ba82;
        color: #ffffff;
    }

    .page {
        background-image: url("~/assets/images/cards/background.png");
        background-position: center;
        background-repeat: no-repeat;
        background-size: cover;
    }

    .layout {
        background-color: rgba(0, 255, 0, 0.1);
        padding-top: 100%;
    }
</style>

Другие вопросы по теме