侧边栏布局和响应式布局的对比(Semi Design)

1. 布局结构

  • 侧边栏布局

    • 通常将页面分为侧边栏(Sider)和主要内容区域(Content)。

    • 侧边栏通常用于导航、菜单或其他辅助功能,而主要内容区域用于展示核心内容。

    • 在你的代码中,Silider 组件就是一个典型的侧边栏布局,侧边栏固定在左侧,右侧是 Header、Content 和 Footer。

  • 响应式布局

    • 响应式布局是指页面能够根据不同的屏幕尺寸或设备自动调整布局和样式。

    • 在你的代码中,Silider2 组件使用了响应式布局的特性,通过 breakpoint 属性设置了断点,当屏幕宽度小于等于 md 时,侧边栏会自动隐藏。

2. 响应式处理

  • 侧边栏布局

    • 侧边栏布局本身并不一定具备响应式特性。它可能在不同屏幕尺寸下保持固定的布局,导致在小屏幕上内容显示不全或布局混乱。

    • 例如,Silider 组件中的侧边栏宽度是固定的 120px,无论屏幕尺寸如何变化,侧边栏的宽度都不会改变。

  • 响应式布局

    • 响应式布局会根据屏幕尺寸的变化自动调整布局。例如,当屏幕宽度小于某个断点时,侧边栏可以隐藏或折叠,以适应小屏幕设备。

    • Silider2 组件中,通过 breakpoint 属性设置了断点 ['md'],当屏幕宽度小于等于 md 时,侧边栏会自动隐藏,从而适应小屏幕设备。

3. 断点处理

  • 侧边栏布局

    • 侧边栏布局通常不涉及断点处理,布局是静态的,不会根据屏幕尺寸变化而改变。

    • 例如,Silider 组件中没有使用 breakpoint 属性,侧边栏的显示和隐藏不会根据屏幕尺寸变化。

  • 响应式布局

    • 响应式布局通常使用断点来处理不同屏幕尺寸下的布局变化。通过设置断点,可以在不同屏幕尺寸下应用不同的样式或行为。

    • Silider2 组件中,通过 breakpoint 属性设置了断点 ['md'],并且通过 onBreakpoint 回调函数可以监听断点的触发情况。

4.侧边栏布局代码:
复制代码
import { Layout } from "@douyinfe/semi-ui";
//侧边布局
const Silider = () => {
  const { Header, Footer, Sider, Content } = Layout;
  const commonStyle = {
    height: 64,
    lineHeight: '64px',
    textAlign: 'center',
    width: 1300,
    background: 'var(--semi-color-fill-0)'
  };
  return (
    <Layout className="components-layout-demo" style={
  
  { margin: '0 auto 0 50px' }}>
      <Sider style={
  
  { width: '120px', background: 'var(--semi-color-fill-2)' }}>Sider</Sider>
      <Layout>
        <Header style={commonStyle}>Header</Header>
        <Content style={
  
  { height: 300, lineHeight: '300px' }}>Content</Content>
        <Footer style={commonStyle}>Footer</Footer>
      </Layout>
    </Layout>
  );
};

export default Silider;
5. 响应式布局代码展示:
复制代码
import { Layout } from "@douyinfe/semi-ui";

const Silider2 = () => {
  // screen: 屏幕类型,bool: 是否满足断点
  const onbreakpoint = (screen, bool) => {
    console.log(screen, bool);
  };
  const commonStyle = {
    height: 64,
    textAlign: 'center',
    lineHeight: '64px',
    background: 'var(--semi-color-fill-0)'
  };
  const { Header, Footer, Sider, Content } = Layout;
  return (
    <Layout className="components-layout-demo" style={
  
  { margin: '0 auto 0 50px' }}>
      <Header style={commonStyle}>Header</Header>
      <Layout>
        <Sider
          style={
  
  { width: '120px', background: 'var(--semi-color-fill-2)', textAlign: 'center' }}
          // 设置断点,当屏幕宽度小于等于 md 时,将侧边栏隐藏
          breakpoint={['md']}
          // 设置断点后,当断点触发时,会触发 onBreakpoint 回调
          onBreakpoint={onbreakpoint}
        >
          Sider
        </Sider>
        <Content style={
  
  { height: 300, lineHeight: '300px', textAlign: 'center' }}>Content</Content>
      </Layout>
      <Footer style={commonStyle}>Footer</Footer>
    </Layout>
  );
};

export default Silider2;
6.效果图(注:在本图片中,上图为侧边栏效果展示图,下图为响应式效果展示图)
tips:如何将两个页面的内容展示在一起,可以在main.jsx中使用div来实现
复制代码
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import Silider from './LayOut/Silider'
import Silider2 from './LayOut/Silider2.0'
createRoot(document.getElementById('root')).render(
  <StrictMode>
    <div>
      <Silider />
      <br />
      <Silider2 />
    </div>
  </StrictMode>,
)
相关推荐
用户0595401744619 分钟前
把 Redis 持久化测试从 800 行 Shell 换成 30 行 pytest,排错效率翻了 10 倍
前端·css
GISer_Jing24 分钟前
AI全栈工程师知识体系全景:从前后端核心架构到落地项目全拆解
前端·人工智能·后端·ai编程
Wect29 分钟前
深度剖析浏览器跨域问题
前端·面试·浏览器
陈随易43 分钟前
bun将会支持Bun.image,你怎么看?
前端·后端·程序员
jingqingdai31 小时前
别用正则格式化 HTML!我用 DOM 遍历实现零风险本地格式化,老项目重构效率直接拉满
前端·重构·html
木斯佳1 小时前
前端八股文面经大全:腾讯前端实习二、三OC面(2026-04-27)·面经深度解析
前端·状态模式
Python私教1 小时前
如意Agent日志系统重构:从 print() 大海捞针到结构化可观测性栈
java·前端·重构
We་ct2 小时前
LeetCode 97. 交错字符串:动态规划详解
前端·算法·leetcode·typescript·动态规划
Chengbei112 小时前
轻量化 Web 安全日志分析神器 星川智盾日志威胁检测、地理溯源、MITRE ATT&CK 映射,支持 Windows/macOS/Linux
前端·人工智能·安全·web安全·macos·系统安全·安全架构