侧边栏布局和响应式布局的对比(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>,
)
相关推荐
陈随易43 分钟前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·后端·程序员
SoaringHeart2 小时前
Flutter进阶:基于 EasyRefresh 的下拉刷新封装 n_easy_refresh_mixin.dart
前端·flutter
IT_陈寒3 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰4 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
竹林8185 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花5 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu12276 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude
咪库咪库咪6 小时前
Vue3-生命周期
前端
莪_幻尘6 小时前
你的 AI Skill 越多越蠢?Token 上下文爆炸的求生指南
前端·ai编程
lichenyang4537 小时前
从 has.echo 到异步 API 注册表:一次 ASCF API 回调不触发的排查复盘
前端