为了账号安全,请及时绑定邮箱和手机立即绑定

部分 div 边框被切断

部分 div 边框被切断

慕侠2389804 2022-05-26 16:34:53
我有一个容器元素,其中包含一些其他元素,但根据屏幕大小,它们的某些部分在各个部分莫名其妙地被切断了。当 HTML 页面的宽度调整(通过单击并拖动它)时,您可以在我的代码沙箱链接上观察行为。如何确保只渲染主容器边框,而子元素没有任何影响?https://codesandbox.io/s/focused-tree-ms4f2import React from "react";import styled from "styled-components";const StyledTextBox = styled.div`  height: 15vh;  width: 30vw;  display: flex;  flex-direction: column;  margin: 0 auto;  border: 1px solid black;  background-color: #fff;  > * {    box-sizing: border-box;  }`;const InputBox = styled.span`  height: 35%;  width: 100%;  display: flex;  border: none;  outline: none;`;const UserInput = styled.input`  height: 100%;  width: 90%;  border: none;  outline: none;`;const SolutionBox = styled.div`  height: 35%;  width: 100%;  border: none;  outline: none;`;const StyledKeyboard = styled.span`    height: 30%;    width: 100%;    position: relative;    background-color: #DCDCDC;    box-sizing: border-box;    display: flex;`export default function App() {  return (    <StyledTextBox>      <InputBox>        <UserInput />      </InputBox>      <SolutionBox/>      <StyledKeyboard/>    </StyledTextBox>  );}
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

像其他评论者一样,我可以很清楚你报告的错误,但对我来说这听起来像是一个box-sizing问题。通过https://k7ywy.codesandbox.io/查看呈现的 DOM 时,我们可以看到box-sizing:border-box它没有应用于包装元素或内部元素,但它已在您粘贴在问题中的代码段中得到修复。

我注意到一些我会质疑的事情。

  1. 为什么不适box-sizing用于一切?通常在处理width:100%;and paddingborder/时margin,它会让生活变得更轻松!
    在我的示例中,我将其从 JS 中删除并使用 CSS 文件应用它。

  2. 为什么你display:flex在多个地方使用但没有分配任何其他与 flex 相关的属性?
    尝试从const InputBox = styled.span和中删除它const StyledKeyboard = styled.span


查看完整回答
反对 回复 2022-05-26
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

只需将背景无或透明应用于输入字段,这将解决边框问题


.muXee{

    background-color: transparent;

//OR background:none

}


查看完整回答
反对 回复 2022-05-26
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

一个很好的简单方法是给box-sizing: border-box父元素。为了安全起见,您可以在根组件级别执行此操作:


* {

  ...;

  box-sizing: border-box;

}


查看完整回答
反对 回复 2022-05-26
  • 3 回答
  • 0 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信