Вопрос или проблема
Я работаю над проектом на Vue.js, где я использую FormKit для управления формами и Tailwind CSS для стилизации. Однако я столкнулся с проблемой: текст, вводимый в поле, появляется того же цвета, что и текст подсказки, который имеет светлый оттенок, в то время как я хотел бы, чтобы введённый текст был темнее.
Вот фрагмент кода, в котором я настраиваю своё поле ввода:
<script setup lang="ts">
import LogoAgilis from '@icons/LogoAgilis.vue'
import { reactive } from 'vue'
import router from '~/router'
import { useAuthStore } from '~/stores/auth'
const authStore = useAuthStore()
const credentials = reactive({
email: '',
password: '',
})
const { execute: login, isFetching: isLoadingLogin } = authStore.login(credentials)
function handleSubmit() {
login()
.then(() => {
router.push('/organizations')
})
}
</script>
<template>
<div class="bg-white p-8 shadow rounded-lg w-80">
<form
class="space-y-4"
@submit.prevent="handleSubmit"
>
<div class="flex justify-center items-center gap-1">
<LogoAgilis
:size="48"
fill="#8d00ec"
/>
</div>
<div>
<label
for="email"
class="block text-sm font-medium leading-6 text-neutral-800"
>
Электронная почта
</label>
<div class="mt-2">
<InputEmail
v-model="credentials.email"
name="email"
validation="required"
placeholder="[email protected]"
class="block w-full rounded-md indent-2 border-0 py-1.5 text-neutral-800 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:outline-2 focus:outline-inset focus:outline-electric-violet-600 sm:text-sm sm:leading-6"
:inputProps="{ class: 'text-neutral-900' }"
/>
</div>
</div>
<div>
<label
for="password"
class="block text-sm font-medium leading-6 text-neutral-800"
>
Пароль
</label>
<div class="mt-2">
<InputPassword
v-model="credentials.password"
name="password"
validation="required"
class="block w-full rounded-md indent-2 border-0 py-1.5 text-neutral-800 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:outline-2 focus:outline-inset focus:outline-electric-violet-600 sm:text-sm sm:leading-6"
/>
</div>
<RouterLink
to="/recover"
class="font-medium text-sm text-electric-violet-600 hover:text-electric-violet-500"
>
Забыли пароль?
</RouterLink>
</div>
<div>
<button
:disabled="isLoadingLogin"
type="submit"
class="flex w-full justify-center rounded-md bg-electric-violet-500 px-3 py-1.5 text-sm font-medium leading-6 text-white shadow-sm hover:bg-electric-violet-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-electric-violet-600"
>
Войти
</button>
</div>
</form>
<p class="mt-6 text-center text-sm text-neutral-600 font-medium">
Новый пользователь?
<RouterLink
to="/register"
class="font-semibold mx-1 leading-6 text-electric-violet-600 hover:text-electric-violet-500"
>
Зарегистрироваться
</RouterLink>
</p>
</div>
</template>
В настоящее время я использую следующие настройки для FormKit:
import { pt } from '@formkit/i18n';
import { defaultConfig } from '@formkit/vue';
import { rootClasses } from './formkit.theme';
export default defaultConfig({
locales: { pt },
locale: 'pt',
config: {
rootClasses,
},
});
Что я уже попробовал:
- Добавить различные классы цвета к полю ввода, например
text-neutral-900
, но это не дало эффекта. - Проверить элемент в браузере, чтобы узнать, какие стили применяются, но я не смог найти причину, почему цвет текста, который я ввёл, такой же, как цвет подсказки.
Как я могу гарантировать, что цвет текста, вводимого в поле FormKit, отличается от цвета подсказки? Есть ли способ правильно задать этот цвет, используя Tailwind CSS в сочетании с FormKit? Есть ли предложения о том, как настроить стили полей ввода FormKit?
Заранее спасибо за любую помощь
Ответ или решение
Для решения вашей проблемы с установкой цвета текста, введенного в поле ввода FormKit в проекте Vue.js с использованием Tailwind CSS, необходимо удостовериться, что необходимые стили правильно применяются к элементам. Ниже приведены шаги, которые помогут вам достичь желаемого результата.
Шаг 1: Убедитесь, что стили применяются правильно
Вы уже добавили класс text-neutral-900
к полям ввода, однако, если эффект не наблюдается, это может быть связано с тем, что стили FormKit перекрывают ваши стили. Чтобы это исправить, можно воспользоваться !important
, чтобы убедиться, что ваши стили имеют более высокий приоритет:
<InputEmail
v-model="credentials.email"
name="email"
validation="required"
placeholder="[email protected]"
class="block w-full rounded-md indent-2 border-0 py-1.5 text-neutral-800 shadow-sm ring-1 ring-inset ring-neutral-300 placeholder:text-neutral-400 focus:outline-2 focus:outline-inset focus:outline-electric-violet-600 sm:text-sm sm:leading-6"
:inputProps="{ class: 'text-neutral-900 !important' }"
/>
Шаг 2: Использование встроенных стилей в формах
Если просто добавление класса с приоритетом не сработало, вы можете также настроить дополнительные стили через пропсы inputProps
, чтобы конкретно настроить цвета:
<InputEmail
v-model="credentials.email"
name="email"
validation="required"
placeholder="[email protected]"
:inputProps="{
class: 'text-neutral-900',
style: 'color: #111827;' // Здесь вы можете использовать любой цвет
}"
/>
Шаг 3: Глобальная настройка стилей
Если вы хотите установить определенный стиль для всех элементов формы, вы можете добавить этот стиль глобально в конфигурацию FormKit. Ваша настройка будет выглядеть следующим образом:
import { pt } from '@formkit/i18n';
import { defaultConfig } from '@formkit/vue';
import { rootClasses } from './formkit.theme';
export default defaultConfig({
locales: { pt },
locale: 'pt',
config: {
rootClasses,
inputs: {
text: {
class: 'text-neutral-900', // Устанавливаем цвет текста по умолчанию
style: 'color: #111827;' // Можно также использовать стиль
},
},
},
});
Шаг 4: Использование Tailwind классов в стилизации
Tailwind CSS позволяет гибко настраивать стили на основе классов. Убедитесь, что вы добавили все необходимые стили для состояния фокуса и размещения элементов, чтобы они соответствовали вашему дизайну.
Также обратите внимание на то, что некоторые классы, такие как placeholder:text-neutral-400
, могли бы влиять на видимость текста. Убедитесь, что они применяются корректно и не мешают чтению вводимого текста.
Вывод
В результате выполнения всех вышеуказанных шагов вы должны быть в состоянии настроить цвет текста, введенного в FormKit, таким образом, чтобы он отличался от цвета placeholder. Поскольку вы используете Tailwind CSS, у вас есть много возможностей для дальнейшей настройке оформления, чтобы ваша форма выглядела именно так, как вы планируете.
Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться. Успехов в вашем проекте!