将元素动画到固定位置的屏幕大小

Posted

技术标签:

【中文标题】将元素动画到固定位置的屏幕大小【英文标题】:Animate an element to the size of screen in fixed position 【发布时间】:2016-10-07 19:22:59 【问题描述】:

如何为<div> 设置动画以在单击时展开以适应屏幕。一直保持在固定位置,然后露出那个<div>的内容

图片:

【问题讨论】:

【参考方案1】:
    为您的元素设置 CSS3 transition。 创建一个,使您的元素100vw100vh(视口宽度高度单位) 添加该类点击

$("#box").on("click", function() 
  $(this).toggleClass("fullScreen");
);
html, bodyheight:100%;margin:0;

/* YOUR BOX */
#box
  position: fixed;
  overflow: hidden; /* in order to contain content */
  
  /* The initial styles: */
  border-radius: 25px;
  background: red;
  left:50px; bottom:50px;
  width: 50px;
  height: 50px;
  

  /* TRANSITION TO THE RESCUE */
          transition: 0.7s;
  -webkit-transition: 0.7s;


/* ADD THIS CLASS WITH JS */
#box.fullScreen
  /* Your override styles: */
  border-radius: 0;
  background: gold;
  left:0; bottom:0;
  width: 100vw;
  height:100vh;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="box">CLICK</div>

【讨论】:

【参考方案2】:

您可以使用transform: scale( ) 按比例缩小和放大全屏框。缩放也会影响盒子的内容。小版本的盒子与全屏盒子的纵横比相同。

示例

$("#box").on("click", function() 
  $(this).toggleClass("fullScreen");
);
html, bodyheight:100%;margin:0;

/* YOUR BOX */
#box
  position: fixed;
  cursor: pointer;
  background-color: red;
  
  /* make the box full screen */
  width: 100vw; /* IE9+ */
  height:100vh; /* IE9+ */
  top: 0;
  left: 0;

  /* scale it down to 0.1 (10%) initially,
     make an offset from bottom left */
  -ms-transform: translate(50px, -50px) scale(0.1); /* IE9 */
  -ms-transform-origin: left bottom; /* IE9 */
  transform: translate(50px, -50px) scale(0.1);
  transform-origin: left bottom;

  /* smooth transition (IE10+) */
  -webkit-transition: all 0.7s ease;
          transition: all 0.7s ease;


/* ADD THIS CLASS WITH JS */
#box.fullScreen 
  /* Your override style:
     remove offset, scale it to 1 (100%) */
  -ms-transform: translate(0px, 0px) scale(1); /* IE9 */
  transform: translate(0px, 0px) scale(1);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>click the box</div>
<div id="box">your content</div>

【讨论】:

虽然这是一个很好的答案,但问题是您无法为 #box 指定特定的宽度和高度,并且它的大小会因屏幕大小而异

以上是关于将元素动画到固定位置的屏幕大小的主要内容,如果未能解决你的问题,请参考以下文章

根据屏幕大小动态更改元素位置

元素不会保持居中,尤其是在调整屏幕大小时

动画 HTML 初始屏幕在移动设备上更改大小 [关闭]

Xcode Storyboard - 如何在不同的 iPhone 屏幕尺寸之间更改元素的字体大小和位置

如何使用autolayout将UIScrollView滚动到viewWillAppear的底部,没有可视化动画

html中怎么让div层固定在屏幕中央右边500像素的位置