vue.js 我的页面在开发环境中不可滚动,但在生产环境中可滚动

bwleehnv  于 2023-01-14  发布在  Vue.js
关注(0)|答案(1)|浏览(192)

当我打开一个内容溢出的表格或其他东西时,我遇到了滚动条的问题。我可以看到右边的滚动条,因为html上有一个样式:overflow-y: scroll;。然而,在我的测试环境中,当我加载50 - 100个设备时,表格变大,但右侧的滚动条仍然保持灰色,我无法向下滚动。另一方面,在我的生产环境中,滚动条按预期工作。我无法理解是什么导致了这个问题,因为我没有对HTML进行任何样式更改,body或table组件本身。下面是我在测试环境中看到的图片:

现在,您可以在"prod"环境中看到该表:

我试过完全禁用html的溢出并在body上启用overflow-y: auto;,但是当我向下滚动到底部时,LOGOUT按钮将保持在左侧导航的中间位置。然而,我知道最好的解决方案可能是在表上设置vh高度并将其设置为溢出,但是,我的分页将不得不在一个定制的单独的html上进行,现在它只是从vuetify库中预先构建的。另外,我的目标是找到导致这种情况的原因,因为html、主体、表格或我认为可能与此相关的任何其他组件的样式没有变化。
下面是我的代码:

<template>
    <v-card>
        <remove-dialog ref="removeDialog" @refresh="fetchDevices"></remove-dialog>
        <add-dialog ref="addDialog" @refresh="fetchDevices"></add-dialog>

        <v-card-title class="mb-4">
            <v-btn color="success" @click="addDevice" outlined small>
                <v-icon>mdi-plus</v-icon>
                {{ $t('action.addNew') }}
            </v-btn>
            <v-spacer></v-spacer>
            <div>{{ `You have ${devicesLeft} available devices to make ` }}</div>
            <v-spacer></v-spacer>
            <v-text-field
                class="pa-0"
                v-model="search"
                @change="fetchDevices"
                append-icon="mdi-magnify"
                :label="$t('label.search')"
                single-line
                hide-details
            ></v-text-field>
        </v-card-title>

        <v-data-table
            :headers="headers"
            :items="devices"
            :options.sync="options"
            :server-items-length="totalDevices"
            :loading="isLoading"
            :footer-props="footerOptions"
            :no-results-text="$t('noDataAvailable')"
            :no-data-text="$t('noDataAvailable')"
        >
            <template v-slot:[`item.connectedItems`]="{ item }">
                <a @click="goToConnectedItems(item.connectedItems)">{{ item.connectedItems.length }}</a>
            </template>
            <template v-slot:[`item.lastConnection`]="{ item }">
                <span v-if="item.lastConnection">{{ item.lastConnection | moment('from', 'now') }}</span>
                <span v-else>n/a</span>
            </template>
            <template v-slot:[`item.actions`]="{ item }">
                <v-tooltip top>
                    <template v-slot:activator="{ on, attrs }">
                        <v-btn color="primary" v-bind="attrs" v-on="on" @click="editDevice(item)" icon>
                            <v-icon>mdi-pencil</v-icon>
                        </v-btn>
                    </template>
                    <span>{{ $t('action.edit') }}</span>
                </v-tooltip>
                <v-tooltip top>
                    <template v-slot:activator="{ on, attrs }">
                        <v-btn color="error" v-bind="attrs" v-on="on" @click="removeDevice(item)" icon>
                            <v-icon>mdi-delete</v-icon>
                        </v-btn>
                    </template>
                    <span>{{ $t('action.delete') }}</span>
                </v-tooltip>
            </template>
        </v-data-table>
    </v-card>
</template>

此组件没有样式部件。

oxcyiej7

oxcyiej71#

我开始回测我实现的特性,我已经找到了导致这个问题的原因--Ionic和它的css样式。因为我使用了一些Ionic组件,只是为了对话框预览,我注入如下:

<script type="module" src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.esm.js"></script>
<script nomodule src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.js"></script>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ionic/core/css/ionic.bundle.css" />

ionic.bundle.css将body overflow设置为hidden,这就是为什么滚动条没有启用的原因。然后,我决定尝试将这个css注入到我在<style scoped>中使用离子组件的组件中,然而,由于某种原因,它仍然将样式设置为body元素。因此,我决定找出到底是哪个样式搞砸了我的页面。
由于bundle加载了一堆样式,我决定单独添加ionic css文件,并从强制性的core.css开始。然后,我决定添加一些其他可选的样式,因为我的ionic组件的文本没有使用预期的字体。我一个接一个地添加normalize.cssstructure.csstypography.css。并得出结论,structure.cssoverflow: hidden设置为我的body元素。因此,我以下面的注入结束(我的滚动条工作正常,字体也正是我所需要的):

<script type="module" src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.esm.js"></script>
<script nomodule src="https://cdn.jsdelivr.net/npm/@ionic/core/dist/ionic/ionic.js"></script>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ionic/core/css/core.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ionic/core/css/normalize.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ionic/core/css/typography.css" />

离子型#离子型

相关问题