next.js - 如何在 Next.js 中在移动设备上显示不同大小的图像

标签 next.js

我想做一些我认为会非常简单的事情:在 200px 显示图像x 200px , 除非屏幕尺寸是 < 500px , 在这种情况下显示在 100px x 100px相反。

这似乎是人们可能拥有的最基本的响应式设计:只有一张图像,根据屏幕尺寸具有两个不同的尺寸……但似乎仅使用 Next 的 <Image> 是不可能的标签。该标签有大量相关 Prop ( sizesloadersrcSet ...加上下一个配置中的 deviceSizesimageSizes)...但似乎没有一个能让我实现这个基本的目标。

我最终通过以下方式让事情正常进行:

  1. Image 开头使用layout="fill"objectFit="cover"

  2. <div> 包装它有 max-widthmax-height (还有最小宽度/高度)200px

  3. 添加媒体查询以将 #2 中的样式更改为 100px以下 500px屏幕宽度

...但这感觉就像我只是扔掉了 <Image> 的所有功能一样并重写我自己的组件,但我没有让 Next 以这种方式自动调整图像大小。

有没有更简单的方法来使用 <Image> 获得相同的效果(同样,相同的图像,只是两个不同的尺寸,由屏幕尺寸控制)直接标记(而不只是在其周围设置 <div> 的样式)?

最佳答案

您需要添加包装 className={logoContainer}对于 <Image> ,即

import style from 'styles/Logo.module.css';

<div className={`mx-auto ${style.logoContainer}`>
  <Image className={style.logo} src={logo} alt="logo" />
</div>

和 css(我的引导类案例):

.logoContainer {
  width: 60px;
  height: 42px;
}

@media (min-width: 768px) {
  .logoContainer {
    width: 65px;
    height: 46px;
  }
}

@media (min-width: 992px) {
  .logoContainer {
    width: 90px;
    height: 63px;
  }
}

关于next.js - 如何在 Next.js 中在移动设备上显示不同大小的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72355286/

相关文章:

javascript - 为什么 styled-jsx 标签中的变量不起作用?

reactjs - 如果用户访问 Next.js 中的特定 URL,如何重定向到另一个页面?

reactjs - 如何在next js中设置和使用本地存储

reactjs - React : Is this the correct way to create a custom hook? 防止 SWR 不必要的调用?

javascript - 使用 next.js 进行服务器端渲染与传统 SSR

javascript - Nextjs useEffect 和 useState Hook 不适用于生产

javascript - 如何在 JavaScript 中修复未定义的 "TypeError: Cannot read property ' 映射'?

reactjs - 如何清理 useEffect 中的 Redux "useDispatch" Action ?

postgresql - Prisma模型自引用(一对多)

reactjs - Next.js ISR页面在CMS中删除后没有被删除