#vue.js #dom #whitespace
Вопрос:
У меня есть эта странная проблема, когда мой v-if
цикл генерирует случайное whitespace
в DOM. Я также могу визуально видеть это (см. Изображение). Вы видите пробел слева от ссылки на загрузку. Код, используемый для создания ссылок, довольно прост, но я не могу понять, откуда берутся пробелы. Есть какие-нибудь идеи? Или я делаю что-то не так? Я также попытался сбросить кэш, чтобы посмотреть, исправило ли это, но нет.
<template>
<nav class="navbar">
<ul class="nav">
<li class="nav-item nav-brand">
<router-link class="brand nav-link" :to="{ name: 'home' }">{{ this.$appName }}</router-link>
</li>
<template v-for="(link, index) in links">
<li class="nav-item" :key="index">
<router-link class="nav-link" :to="{ name: link.name }">{{ link.title }}</router-link>
</li>
</template>
</ul>
</nav>
</template>
И вот как я использую шаблон:
<AppNavigation :links="[
{ name: 'upload', title: 'Upload' },
{ name: 'login', title: 'Login' }
]" />
<style lang="scss">
// Import variables and mixins
@use '../../scss/vars';
@use '../../scss/mixins';
.navbar {
height:vars.$headerHeight;
.nav {
margin:0;
padding:0;
list-style:none;
height:inherit;
}
.nav-brand {
.brand {
background:-moz-linear-gradient(-35deg, #33b2d9 0%, #e368f5 100%);
background-size:100% 100%;
transition:background-size .25s ease-in-out!important;
amp;:hover {
background:-moz-linear-gradient(-35deg, #33b2d9 0%, #e368f5 100%)!important;
background-size:100% 200%!important;
}
}
}
.nav-item {
display:inline-flex;
height:inherit;
.nav-link {
height:100%;
display:flex;
align-items:center;
padding:0 20px;
color:vars.$navLinkColor;
font-size:vars.$navLinkSize;
transition:background .05s ease-in-out;
amp;:hover {
background:lighten(vars.$navItemBg, 5%);
}
}
}
}
</style>
Комментарии:
1. Вы используете библиотеку стилей или можете включить стили?
2. Я использую библиотеку Normalize глобально, и я включил стиль компонента.
3. Можете ли вы предоставить песочницу или живую демонстрацию? Другим людям легче отлаживать ваш код таким образом.
4. у вас есть пробелы в шаблоне, удалите его, также поместите v-для на
li
удаление второго шаблона5. @MajedBadawi Я посмотрю, смогу ли я позже разместить проект на домене. @LawrenceCherone Удалил дополнительный шаблон и добавил цикл for непосредственно к
<li>
элементу. Никаких изменений. Также удалил пробелы в шаблоне, ничего не изменилось.
Ответ №1:
Я воспроизвел проблему, имея предварительно <li>
определенный элемент. Затем, вслед за этим, a v-for
на <li>
элементе. Подобный этому:
<li ...>Test</li>
<li v-for="" ...></li>
Пробелы добавляются над v-for
.
Решите эту проблему, просто добавив бренд в список ссылок, которые будут отображаться, и удалив предварительно определенный элемент бренда.