【发布时间】:2022-02-05 02:08:38
【问题描述】:
我只能在portrait 中使用corrl 在this 发布响应中提到的以下代码在display 中添加div 标记
<script context="module">
import Viewport from 'svelte-viewport-info'
</script>
<div class="only-portrait">
only visible in Portrait Mode
</div>
<style>
:global(.Landscape .only-portrait) {
display: none;
}
:global(.Portrait .only-portrait) {
display: block;
background: black;
color: white;
padding: 2rem;
}
</style>
按预期工作
但是当更具体的视口尺寸为height.viewport <= 133% of width.viewport时,在portrait模式下需要减小图像元素尺寸之一(高度和宽度)
我尝试使用来自Inner and Outer window bindings 的代码获取viewport height 和width
<script>
$: outerWidth = 0
$: outerHeight = 0
</script>
<svelte:window bind:innerWidth bind:outerWidth bind:innerHeight bind:outerHeight />
尝试使用jquery根据条件viewport.width*1.33 <= viewport.height改变图像的宽度和高度
如here提到的导入jquery
<script lang="ts">
import jQuery from 'jquery';
import { onMount } from 'svelte';
onMount(() => {
window.jQuery = jQuery;
jQuery(window).resize(function(event){
console.log(outerWidth*1.33,' ',outerHeight);
if(outerWidth*1.33 <= outerHeight) {
jQuery(".imageclass").each(function() {
jQuery(this).attr("width", "78vw"); jQuery(this).attr("height", "78vw/2.81vh");
});}
});
});
</script>
<svelte:window bind:outerWidth bind:outerHeight />
我收到了这个错误
文件:/home/Documents/sve/svelteDemo/src/App.svelte 29 | 从'svelte-meta-tags'导入{ MetaTags }; 30 |进口 '苗条的视口信息'; 31 |从'jquery'导入jQuery; | ^ 32 |从'svelte'导入{ onMount}; 33 |从'./assets/image1.png'导入image1v; 在 formatError (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36769:46) 在 TransformContext.error (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36765:19) 在 normalizeUrl (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:73703:26) 在 processTicksAndRejections (节点:internal/process/task_queues:96:5) 在异步 TransformContext.transform (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:73843:57) 在异步 Object.transform (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:36985:30) 在异步 doTransform (/home/Documents/sve/svelteDemo/node_modules/vite/dist/node/chunks/dep-f5552faa.js:52060:29)
似乎不明白这里出了什么问题!
如何做到这一点?还是有一个简单的解决方案?
【问题讨论】:
-
可以使用特殊的
svelte:window组件来绑定窗口的宽度和高度。这是一个示例:svelte.dev/tutorial/svelte-window-bindings -
@johannchopin 尝试使用它,遇到上述问题