- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我做了一个 3D 立方体,绝对放置 6 个面,然后旋转它们。
我添加了一个链接,如 <a href="test.html">0. Front Link</a>
每一张脸。
我添加了 6 个按钮,用于将立方体旋转到每个相应的位置。
预期行为:当立方体旋转时,单击显示面上的链接应该会转到 test.html
.
实际行为: - 在 Firefox 66 中,它按预期工作。 - 在 Chromium 73 中,六个链接中有五个按预期工作,但“背面”(<a href="test.html">5. Back Link</a>
)上的链接不起作用。该链接位于 HTML 中,如果我在开发工具中单击它,它会正常运行。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="description" content="3d Cube, 2019 version">
<meta name="author" content="John Lynch">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<!-- font awesome -->
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
<!--Import Google Icon Font-->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0-beta/css/materialize.min.css">
<link rel="stylesheet" href="style.css">
<title>
3d Cube
</title>
</head>
<body>
<section class="container">
<div id="cube">
<div class="face" id="front">
<a href="test.html">0. Front Link</a>
</div>
<div class="face" id="left">
<a href="test.html">1. Left Link</a>
</div>
<div class="face" id="right">
<a href="test.html">2. Right Link</a>
</div>
<div class="face" id="bottom">
<a href="test.html">3. Bottom Link</a>
</div>
<div class="face" id="top">
<a href="test.html">4. Top Link</a>
</div>
<div class="face" id="back">
<a href="test.html">5. Back Link</a>
</div>
</div>
</section>
<section class="row">
<button class="btn-floating btn-large" id="btn-face0" onclick="rot(0)"><i class="material-icons">filter_none</i></button>
<button class="btn-floating btn-large" id="btn-face1" onclick="rot(1)"><i class="material-icons">filter_1</i></button>
<button class="btn-floating btn-large" id="btn-face2" onclick="rot(2)"><i class="material-icons">filter_2</i></button>
<button class="btn-floating btn-large" id="btn-face3" onclick="rot(3)"><i class="material-icons">filter_3</i></button>
<button class="btn-floating btn-large" id="btn-face4" onclick="rot(4)"><i class="material-icons">filter_4</i></button>
<button class="btn-floating btn-large" id="btn-face5" onclick="rot(5)"><i class="material-icons">filter_5</i></button>
</section>
<script>
function rot(face) {
document.getElementById('cube').classList = `rotate${face}`;
}
</script>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script type="text/javascript" src="scripts/index.js"></script>
</body>
</html>
/*
Display content on the faces of a rotating cube
*/
* {
box-sizing: border-box;
text-decoration: none;
}
html, body {
height:100%;
width: 100%;
padding: 1.4vmax;
overflow: hidden;
background-color: black;
--cube-dim: 40vmax;
--half-cube-dim: calc(var(--cube-dim)*0.5);
--minus-half-cube-dim: calc(var(--cube-dim)*-0.5);
}
#cube {
transform-style: preserve-3d;
/*perspective: 16000px;
perspective-origin: center center;*/
backface-visibility: hidden;
position: absolute;
top: calc(50% - var(--half-cube-dim));
left: calc(50% - var(--half-cube-dim));
transform-origin: center center;
font-size: 8vmin;
}
.face {
position: absolute;
width: var(--cube-dim);
height: var(--cube-dim);
border-radius: 3%;
background-color: black;
opacity: 1.0;
box-shadow: 0 0 0 2px;
border: 4px solid gold;
/*margin: var(--half-cube-dim);*/
}
button {
position: absolute;
width: 10vw;
height: 5vh;
font-size: 2vw;
color: #ffbb00;
background-color: #2020ff;
border-radius: 5px;
}
.rotate0 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateX(0) translateY(0) rotateX(0deg) rotateY(0deg);
}
.rotate1 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateY(0) translateX(var(--half-cube-dim)) rotateY(90deg);
}
.rotate2 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateY(0) translateX(var(--half-cube-dim)) rotateY(-90deg);
}
.rotate3 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateX(0) translateY(var(--half-cube-dim)) rotateX(90deg);
}
.rotate4 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateX(0) translateY(var(--half-cube-dim)) rotateX(-90deg);
}
.rotate5 {
transition-timing-function: ease-out;
transition: 0.8s;
transform: translateY(0) translateX(var(--cube-dim)) rotateY(180deg);
}
/*=================================================*/
#front {
transform: rotate3d(0, 1, 0, 0deg) translateZ(var(--half-cube-dim));
}
#right {
transform: rotate3d(0, 1, 0, 90deg) translateZ(var(--half-cube-dim));
}
#back {
transform: rotate3d(0, 1, 0, 180deg) translateZ(var(--half-cube-dim));
}
#left {
transform: rotate3d(0, 1, 0, -90deg) translateZ(var(--half-cube-dim));
}
#top {
transform: rotate3d(1, 0, 0, 90deg) translateZ(var(--half-cube-dim));
}
#bottom {
transform: rotate3d(1, 0, 0, -90deg) translateZ(var(--half-cube-dim));
}
.material-icons {
font-size: 4vmin;
}
.test-container {
background: #331144;
color: #ffaa00;
position: absolute;
width: 100%;
height: 100%;
/*top: 50%;
left: 50%;*/
}
.test-container h1 {
font-size: 4vw;
top: 40%;
left: 40%;
position: absolute;
}
我已经搜索了有关在 3D 中不起作用的链接的答案,但一无所获。我检查了开发工具和我的编辑器中的代码,但没有发现任何可以将此链接与其同类链接区分开来的东西。
我很困惑。
最佳答案
我不太熟悉 3D CSS,但我通过实验发现罪魁祸首是“立方体”div 上的 backface-visibility: hidden;
属性。
当一个 div 有背面剔除并且你 3d 旋转它远离 View (即相机/用户/任何)然后它被剔除(当然)。这意味着 A) 它不是视觉呈现的,B) 它不与鼠标交互。现在,当您旋转那个被剔除的 div 的 child 使其实际面对 View 时,即使父 div 也应该正常渲染并与鼠标交互正在被剔除。不幸的是,Chromium 73 要么存在错误,要么解释方式不同,因此旋转面向 View 的背面剔除元素的子元素按预期呈现,但是不与鼠标交互。
下面是我的意思的一个简化示例。如果您在 Chromium 73 中运行它,那么您可以看到两个按钮,但第一个不能用鼠标操作:
<!doctype html>
<html>
<head>
<style>
.parent {
background-color: red;
transform: rotateY(180deg);
}
.child {
background-color: blue;
transform: rotateY(180deg);
}
.culled {
backface-visibility: hidden;
}
.space { padding: 1em; }
</style>
</head>
<body>
<div class='parent culled'>
<button class='child'>hi</button>
</div>
<div class='space'></div>
<div class='parent'>
<button class='child'>hi</button>
</div>
</body>
</html>
关于html - 为什么 Chrome 仅忽略 3D 立方体一个面上的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525133/
非常简单的问题 - 是否可以通过 Chromium 创建 google chrome 扩展,并让在不同操作系统上运行 Chrome 的人使用相同的扩展? 我正在Ubuntu上开发。 最佳答案 是的,完
我了解 chrome.bookmarks API(记录在 http://goo.gl/tIb6V6 )旨在用于开发访问/操作我的 Chrome 书签的 Chrome 扩展程序(当然要在 Chrome
在比较开源浏览器 Firefox 和 Chromium 的扩展、附加组件和列表时,我试图找到一些有趣的数据。 我感兴趣的是多宿主扩展(两个浏览器列表上都可用的扩展)。 但是当浏览 Chromium 扩
使用新的 chrome.notifications API,我无法从我的扩展程序中获取通知以显示。即使是最基本的通知也无法为我显示,但我没有收到任何错误,并且回调函数已正确执行。 list .json
我正在构建一个在 Chrome 上运行的信息亭媒体,可以播放带音频的视频。我知道默认情况下,chrome 只允许自动播放带有静音 Prop 的视频。 而且我知道我可以通过 chrome://flags
我从来没有真正写过 真实 Chrome 扩展程序。不久前我做了一个只是一个链接下拉列表,但这并不重要。无论如何,与其先回到关于编写 Chrome 扩展程序的大量教程中,不如先确保我的想法是可行的。 我
主要目的是在单个容器中运行多个 chrome 浏览器(9 个浏览器)。 我有一个集线器和节点设置,其中包含多个浏览器的容器,可在单个 chrome 节点容器中运行。我使用以下 docker 命令创建了
我想写一个小的 chrome 扩展程序,它应该从网页 A(当前网页)获取信息,将选项卡更新到网页 B,然后将代码注入(inject)网页 B。不幸的是,以下代码正在将网页更新到 B 但注入(injec
是否可以打开 Chrome 开发者工具来检查 Chrome 应用? 最佳答案 所有可调试目标都列在 chrome://inspect/ 下。请参阅“应用程序”标签。 关于google-chrome -
我正在为 Google Chrome 开发一个应用程序,我想知道如何收费。 问题是我住在巴西,在这个链接上它告诉我它不支持 Chrome 网上应用店付款。如果没有 Chrome 网上商店付款,我可以通
我刚刚更新到 Chrome 32.0.1700.76 m(在 Win7 上)并且开发人员工具已更改。 特别令人痛苦的是用于检查页面元素的放大镜图标消失了。也没有提到它的快捷方式列表。 任何人都知道这已
我在 chrome-extension API (chrome.webrequest) 中遇到问题。 我的 list .json { "name": "tesst", "version": "
我已经制作了 chrome 主机来在我的扩展程序和我的进程之间传递 native 消息,我的进程在 chrome 启动时启动,但在我关闭 chrome 时不关闭,我应该向主机的 list 添加参数还是
文档对此非常不清楚。我知道如果您自己托管您的扩展程序,您可以通过增加版本号来自动更新您的扩展程序。但是,我不知道您是否可以在仍发布到 chrome 网上商店的同时进行自托管。 我不敢相信 Google
我最近一直在使用 Selenium WebDriver。我还专门与 chromedriver 合作。每当我打开一个新的 chrome 窗口 (driver.get(url)) 时,Chrome 都会以
我指的是chrome://flags 我很想知道是否可以通过自定义 chrome 扩展启用或禁用特定的 chrome 标志? 例如-我想启用 Enable Media Source API on e
当我在 chrome 开发者仪表板上向我的扩展程序上传更新时, 它无法这样做,它显示, An error occurred: Failed to process your item. Chrome W
我正在尝试编写一个需要用户身份验证的 chrome 扩展。 Google's tutorial建议我需要先上传到网上商店才能获得 key : Login to the Google APIs Cons
我已经开发了一个 Chrome 扩展程序并且我已经打包了它。 我将我的扩展程序发送给一些人试用,但 Chrome 开始阻止它在商店中找不到的扩展程序。 有没有办法安装我的扩展程序而不会被 Chrome
某些 Chrome 扩展不适用于 Chromium。例如:http://code.google.com/chrome/extensions/samples.html#5d81304a17cf7ac28
我是一名优秀的程序员,十分优秀!