Javascript discover.js如何调整元素大小?

Javascript discover.js如何调整元素大小?,javascript,html,css,reveal.js,Javascript,Html,Css,Reveal.js,我试图了解如何动态调整元素的大小 要查看这一点,请调整页面的高度,并查看元素(在一定程度上)如何随着页面的收缩而收缩 然而,使用ChromeInspector,我看不出这种收缩是如何在CSS或Javascript中实际发生的 (我的兴趣来自于想要改进它,如果可能的话,但我很惊讶弄清楚它到底是如何工作的。)如果您查看github上托管的源代码,您可以确切地看到它在做什么 它检查浏览器CSS功能,如2d和3d变换 // Detect support for CSS 3D transforms

我试图了解如何动态调整元素的大小

要查看这一点,请调整页面的高度,并查看元素(在一定程度上)如何随着页面的收缩而收缩

然而,使用ChromeInspector,我看不出这种收缩是如何在CSS或Javascript中实际发生的


(我的兴趣来自于想要改进它,如果可能的话,但我很惊讶弄清楚它到底是如何工作的。)

如果您查看github上托管的源代码,您可以确切地看到它在做什么

它检查浏览器CSS功能,如2d和3d变换

    // Detect support for CSS 3D transforms
supports3DTransforms = 'WebkitPerspective' in document.body.style ||
'MozPerspective' in document.body.style ||
'msPerspective' in document.body.style ||
'OPerspective' in document.body.style ||
'perspective' in document.body.style
它使用基本的事件监听器

    // Force a layout when the whole page, incl fonts, has loaded
window.addEventListener( 'load', layout, false );
...
/**
* Binds all event listeners.
*/
function addEventListeners() {

window.addEventListener( 'hashchange', onWindowHashChange, false );
window.addEventListener( 'resize', onWindowResize, false );
...

源代码实际上有不错的注释,因此您应该能够学到很多东西。

您听说过媒体查询吗?这是一种通过CSS部署的技术,允许您根据窗口的宽度和高度影响元素的样式。下面是如何将其用于discover.js

请继续阅读:


迷你图坦卡蒙:

演示文稿配置为“正常”分辨率,这意味着演示文稿最初的创作分辨率。默认情况下,当前设置为960x700

基于该分辨率和由此导出的纵横比,该框架将应用CSS 2D转换以适应任何屏幕大小的内容。有一些配置值可以控制所有这些,包括对框架将扩展您的内容的限制

Reveal.initialize({

    ...

    // The "normal" size of the presentation, aspect ratio will be preserved
    // when the presentation is scaled to fit different resolutions. Can be
    // specified using percentage units.
    width: 960,
    height: 700,

    // Factor of the display size that should remain empty around the content
    margin: 0.1,

    // Bounds for smallest/largest possible scale to apply to content
    minScale: 0.2,
    maxScale: 1.0

});

explain.js还使用
zoom
属性控制小宽度上完整幻灯片的大小调整。它会动态更改
zoom
属性的值,如果您不断调整窗口大小,您会注意到该属性。

我已经阅读了源代码,并在chrome inspector中进行了探索。但是,我找不到任何可以调整字体大小的位。在resize(layout)上运行的函数会上下移动幻灯片,但不会执行我能看到的任何调整大小的操作?如果我删除“layout”和“resize”函数的全部内容,并将Supports2DTTransforms和Supports3DTTransforms设置为false,则仍然会发生调整大小的操作。虽然我同意代码的布局很好,但令人惊讶的是,这些地方并不是调整大小的地方@Chris Jefferson-在CSS中,我怀疑是媒体查询根据屏幕大小改变字体大小“@media screen and(最大宽度:700px),(最大高度:400px)”事实上,你是对的,也是错的!:)“resize”中不会发生大小调整,这是因为CSS:
@media screen和(最大宽度:900px),(最大高度:600px){.leaver.slides{font size:0.82em;}}}@media screen和(最大宽度:700px),(最大高度:400px){.leaver.slides{font size:0.66em;}}
是的,在看到您的评论之前,刚刚找到并编辑了我的答案。:)请看@hakim的答案。他是discover.js的创建者。我提交问题时,情况并非如此。我私下实现了类似的东西,我应该看看这是否比我自己的代码好。有了这段代码,宽度确实在改变。但是高度保持不变,不管它的值是多少。看起来,低数量只是降低了长方体(在立方体动画中)。这是虫子吗?@hakim很好!是否可以只调整图像的缩放比例?(例如,是否根据设备大小以一致的宽度显示嵌入式图像?)我使用angularjs显示默认的display.js模板,但所有内容看起来都非常小,当我检查幻灯片的属性时,以像素为单位的大小是正确的宽度:配置上为950,但在渲染时大小太小,甚至无法读取内容。如果你知道怎么修理的话,请告诉我,如果你想看的话,我明天会放一个扑克牌。thanksIm使用angularjs显示默认模板leaver.js,但当我检查幻灯片的属性时,所有内容看起来都很小,以像素为单位的大小都是正确的宽度:配置为950,但在渲染时大小太小,甚至无法读取内容。如果你知道怎么修理的话,请告诉我,如果你想看的话,我明天会放一个扑克牌。谢谢
Reveal.initialize({

    ...

    // The "normal" size of the presentation, aspect ratio will be preserved
    // when the presentation is scaled to fit different resolutions. Can be
    // specified using percentage units.
    width: 960,
    height: 700,

    // Factor of the display size that should remain empty around the content
    margin: 0.1,

    // Bounds for smallest/largest possible scale to apply to content
    minScale: 0.2,
    maxScale: 1.0

});