如何用一个元素创建 3D 透视图像?

2024-03-13

I have a code that given an image does the effect of perspective in 3D. This is the result: CSS 3D transformation and perspective

这是代码:

.thumb {
    margin: 100px;
    perspective: 1000px;  
    width: 1920px;
    height: 1200px;
         
}


.thumb a {
    --bg-pseudo: rotateY(120deg); /*Modificar transform */
    --bg-pseudo2: --bg-pseudo2', '-5px  -15px  45px 130px rgba(0, 0, 0, 0.3); /*modificar box-shadow */
    display: block;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(rgba(0, 0, 0, 0.4), rgba(0, 0, 0, 0.4)),url('https://www.wallpaperk.com/wallpapers/white-wolf-painting-5111.jpg'); 
    
    background-size: 0, cover;
    transform-style: preserve-3d;
    transition: all 2s;
    transform: rotateY(40deg);
    /* From rotateX */
    transform-origin: left;
    /* From bottom */

    border-top-left-radius: 3px;
    border-bottom-left-radius: 3px;
}



.thumb a:after {
    content: '';
    position: absolute;
    left: 0;
    bottom: 0;
    width: 50px;
    height: 100%;
    background: inherit;
    background-size: cover, cover;
    background-position: 0px 0px;
    transform: var(--bg-pseudo);
    transform-origin: left;

    border-top-right-radius: 10px;
    border-bottom-right-radius: 10px;
}


.thumb a:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.5);
    box-shadow: var(--bg-pseudo2);
    transition: all 2s;
    opacity: 1;
    transform: rotateX(0) translateZ(-20px) scale(0.85);
    transform-origin: bottom;
}
<div class="thumb" id="thumb">
    <a href="#"></a>
</div>

问题是当我在 HTML 中使用它时<div> and <a>,我想将它与<img>

问题是:有没有办法通过在图像中放置一个类来达到同样的效果?

<img src="foto.jpg" class="3dPerspective">

CSS 会怎样?请注意,结果有阴影。


这是使用的近似值clip-path and mask。在某些情况下,由于不透明度降低,它可能无法很好地呈现mask

.box {
  --x:10px;
  --y:20px;
  clip-path:polygon(
       0 var(--x),var(--y) 0,
       100% 0,100% 100%,
       var(--y) 100%,0 calc(100% - var(--x)));
  margin:30px;
  transform-origin:left;
  transform:perspective(1000px) rotateY(40deg);
  -webkit-mask:linear-gradient(to right,#fff var(--y),rgba(0,0,0,0.8) 0);
          mask:linear-gradient(to right,#fff var(--y),rgba(0,0,0,0.8) 0);
}
<img src="https://picsum.photos/id/1072/600/300" class="box">

<img src="https://picsum.photos/id/104/600/300" class="box">

另一个想法,轮廓更好,没有不透明度问题,但您需要稍微剪切图像:

.box {
  --x:10px;
  --y:20px;
  clip-path:polygon(
       0 calc(var(--x) + var(--y)),var(--y) var(--y),
       calc(100% - var(--y)) var(--y),calc(100% - var(--y)) calc(100% - var(--y)),
       var(--y) calc(100% - var(--y)),0 calc(100% - var(--x) - var(--y)));
  margin:30px;
  transform-origin:left;
  transform:perspective(1000px) rotateY(40deg);
  outline: var(--y) solid rgba(0,0,0,0.4);
  outline-offset: calc(-1*var(--y));
}
<img src="https://picsum.photos/id/1072/600/300" class="box">
<img src="https://picsum.photos/id/104/600/300" class="box">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用一个元素创建 3D 透视图像? 的相关文章

  • 如何在 PHPStorm 中禁用 html 标签完成

    当我在 HTML 其他上下文中并输入时foobar然后按Tab键它会自动变成
  • React App 中的图像损坏

    我正在尝试访问 React 应用程序中的图像 当我运行代码时 我在网页上看到一个损坏的图像图标 我不确定我是否正在访问图像的正确路径 我的代码如下 import React Component from react class Header
  • 如何将表格中的td高度设置为0px?

    我有一个包含几行的 HTML 表 这是动态构建的 全部 tr 有一个 td inside If one td 里面没有 HTML 内容 我希望它是不可见的 如何才能做到这一点 并不是说里面的 HTML 是动态渲染的 我不想使用display
  • 如果在 中执行 document.write,为什么 DHTML 行为在 IE8 中不起作用?

    我们有一个 3rd 方 Web 应用程序 可以在 IE6 中运行 但不能在 IE8 中运行 示例代码如下 在IE6中会弹出 message from htc 消息 但在IE8中不会弹出 测试 html
  • 根据复选框和数据元素隐藏/显示表格行

    我想隐藏表中的行 因为我选中了复选框并且该数据元素在表中不正确 另一个实验 我还可以使用数据元素进行排序并按下拉列表排序 查看 tr 标签 价格 名称 评级 吗 div class filter list div
  • 如何防止 CFDocument 中的内容中间发生分页?

    我使用 cfdocument 标签从 html css 动态生成 PDF 文件 有些内容块我不想跨越多个页面 经过一番搜索后 我发现根据文档支持 page break inside 样式 然而 在我的测试中 声明 page break in
  • 滚动时输入自动完成位置错误(chrome)

    我在输入文本的默认自动完成功能方面遇到了一些麻烦 滚动时它不会相应移动 我希望自动完成文本保留在输入的正下方 有办法做到这一点吗 我在 Chrome 浏览器版本 57 0 2987 133 中发生这种情况 fiddle https jsfi
  • 使用 javascript 更改 div 颜色

    div style height 20px width 100 background color 000000 div br
  • 使用日语“Enter”键进行搜索功能

    我在日语方面遇到了问题 我有一个允许用户搜索数据的表单 当用户输入要搜索的字符串并按 Enter 键时 搜索功能就会执行 我的代码是 formSearch input keyup function event var key event c
  • html 表格单元格的条件格式

    是否有现成的解决方案可以对 HTML 表格进行条件格式设置 通过条件格式 我更感兴趣的是根据该列或其他列 在同一个表中 的值 数字 将不同的颜色作为单元格背景 类似于我们在 Excel 条件格式 gt 色阶 gt 红黄绿中的内容 我想在通过
  • 样式标签中的源映射是否有效?

    我在标签和源映射中遇到 CSS 问题 为了缩短项目的加载时间 我改变了将 CSS 放入 HTML 的方式 将其改为 h1 Source maps working wonderfully h1 进入这个
  • 将文本大小调整为矩形 在 Canvas HTML5 中调整大小

    我是 Canvas 新手 我正在创建一个网站 以在调整矩形大小时增加文本 我尝试了很多 但没有任何效果 实际上 我希望如果我仅按其宽度调整矩形大小 向左拉伸 向右拉伸 则仅应增加文本宽度而不是字体大小 我已经完成了字体大小 但发现增加孤立文
  • 同页锚链接到部分 id 在 IE8 中不起作用

    我有一个带有导航的单页 HTML5 网站 可以将用户引导至该部分 在除 IE8 之外的所有浏览器中都可以正常工作 IE8 不执行任何操作 我所拥有的虚拟版本 a href about About a a href work Work a a
  • 扩展位置绝对div超出溢出隐藏div

    我已经好几个月没有做过CSS了 所以我可能会错过一些简单的东西 但无论解决方案是什么 我都无法弄清楚 所以问题就在这里 这是我的代码的简化版本 div style height 100 width 200px div style margi
  • 如何在CSS中制作一个带有边框的可调整大小的心形

    我想要制作一个心形 用户可以将其大小调整为任意宽度和高度 并且边框为 1 像素 我尝试了用纯 CSS 制作的心形 https stackoverflow com a 17386187 1404447 https stackoverflow
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 将 CSS 生成的三角形拆分为 2 个水平不同的相同颜色

    正如您应该能够通过此代码看到的那样fiddle http jsfiddle net Xh36r 1 以及下面 我希望能够分割显示在第二个 div 顶部的 CSS 生成的三角形水平均等在 之间orange and green使用的颜色 现在它
  • 强制输入数字小数位

    我想强制
  • 如何从 bootstrap-markdown.js 调用 .getContent 和 .parseContent

    我是使用 Bootstrap 插件的新手 刚刚通过代码学院 http www codecademy com en skills make an interactive website 我真的很想用这个很棒的引导 Markdown 插件 ht

随机推荐