为什么我的元素有一个滚动条,即使它适合它的容器?
Why does my element have a scrollbar even though it fits its container?
我正在 jsPsych(一个 JavaScript 库)中编写代码,并试图在我的屏幕上显示一个 +。 + 的最大高度为 85vh,最大宽度为 85vw,但两者都达不到,因为它只有 60px。但是,即使 + 适合它的容器,它上面还有一个滚动条。
我不明白为什么会有滚动条。我使用的是 overflow-y:auto,因此滚动条只应在必要时出现。但是,我知道这是不必要的,因为在 + 周围显示一个 85vw x 85vh 的框表明 + 小于这些尺寸。
请查看我的代码片段以获得视觉效果。请注意,我使用的是 jsPsych 6.3,它无法在线获得。因此,片段中的 JavaScript 代码使用 jsPsych 7.0,而 CSS 代码来自 jsPsych 6.3。我认为滚动条问题来自 CSS 6.3 代码,因为当我将 CSS 6.3 替换为 CSS 7.0.
时它消失了
有谁知道为什么我的 + 上有滚动条?
const jsPsych = initJsPsych();
const trial = {
type: jsPsychHtmlKeyboardResponse,
stimulus: '<div class="box">' +
'<div class="cross">+</div>' +
'</div>'
}
jsPsych.run([trial])
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
/* Container holding jsPsych content */
.jspsych-display-element {
display: flex;
flex-direction: column;
overflow-y: auto;
}
.jspsych-display-element:focus {
outline: none;
}
.jspsych-content-wrapper {
display: flex;
margin: auto;
flex: 1 1 100%;
width: 100%;
}
.jspsych-content {
max-width: 95%;
/* this is mainly an IE 10-11 fix */
text-align: center;
margin: auto;
/* this is for overflowing content */
}
.jspsych-top {
align-items: flex-start;
}
.jspsych-middle {
align-items: center;
}
/* fonts and type */
.jspsych-display-element {
font-family: 'Open Sans', 'Arial', sans-serif;
font-size: 18px;
line-height: 1.6em;
}
/* PROJECT STARTS HERE */
.box {
border-style: solid;
width: 85vw;
height: 85vh;
}
.cross {
font-size: 60px;
max-width: 85vw;
max-height: 85vh;
overflow-y: auto;
}
<script src="https://unpkg.com/jspsych@7.0.0"></script>
<script src="https://unpkg.com/@jspsych/plugin-html-keyboard-response@1.0.0"></script>
将您的 overflow-y
更改为隐藏。我在片段中看到了它,但没有全屏显示。您的十字架容器没有应用任何边距或填充,因此它可能使用浏览器默认设置并使其触及容器的顶部,它足以在足够小的屏幕尺寸下创建滚动。
编辑:打叉就是抱歉在inspector
里选错了class
.cross {
font-size: 60px;
max-width: 85vw;
max-height: 85vh;
overflow-y: hidden;
}
我正在 jsPsych(一个 JavaScript 库)中编写代码,并试图在我的屏幕上显示一个 +。 + 的最大高度为 85vh,最大宽度为 85vw,但两者都达不到,因为它只有 60px。但是,即使 + 适合它的容器,它上面还有一个滚动条。
我不明白为什么会有滚动条。我使用的是 overflow-y:auto,因此滚动条只应在必要时出现。但是,我知道这是不必要的,因为在 + 周围显示一个 85vw x 85vh 的框表明 + 小于这些尺寸。
请查看我的代码片段以获得视觉效果。请注意,我使用的是 jsPsych 6.3,它无法在线获得。因此,片段中的 JavaScript 代码使用 jsPsych 7.0,而 CSS 代码来自 jsPsych 6.3。我认为滚动条问题来自 CSS 6.3 代码,因为当我将 CSS 6.3 替换为 CSS 7.0.
时它消失了有谁知道为什么我的 + 上有滚动条?
const jsPsych = initJsPsych();
const trial = {
type: jsPsychHtmlKeyboardResponse,
stimulus: '<div class="box">' +
'<div class="cross">+</div>' +
'</div>'
}
jsPsych.run([trial])
@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
/* Container holding jsPsych content */
.jspsych-display-element {
display: flex;
flex-direction: column;
overflow-y: auto;
}
.jspsych-display-element:focus {
outline: none;
}
.jspsych-content-wrapper {
display: flex;
margin: auto;
flex: 1 1 100%;
width: 100%;
}
.jspsych-content {
max-width: 95%;
/* this is mainly an IE 10-11 fix */
text-align: center;
margin: auto;
/* this is for overflowing content */
}
.jspsych-top {
align-items: flex-start;
}
.jspsych-middle {
align-items: center;
}
/* fonts and type */
.jspsych-display-element {
font-family: 'Open Sans', 'Arial', sans-serif;
font-size: 18px;
line-height: 1.6em;
}
/* PROJECT STARTS HERE */
.box {
border-style: solid;
width: 85vw;
height: 85vh;
}
.cross {
font-size: 60px;
max-width: 85vw;
max-height: 85vh;
overflow-y: auto;
}
<script src="https://unpkg.com/jspsych@7.0.0"></script>
<script src="https://unpkg.com/@jspsych/plugin-html-keyboard-response@1.0.0"></script>
将您的 overflow-y
更改为隐藏。我在片段中看到了它,但没有全屏显示。您的十字架容器没有应用任何边距或填充,因此它可能使用浏览器默认设置并使其触及容器的顶部,它足以在足够小的屏幕尺寸下创建滚动。
编辑:打叉就是抱歉在inspector
里选错了class.cross {
font-size: 60px;
max-width: 85vw;
max-height: 85vh;
overflow-y: hidden;
}