CSS代码:
.box {
max-width: 414px;
height: 480px;
border: solid #000;
margin: auto;
overflow: auto;
}
.shape {
float: left;
width: 30px; height: 340px;
shape-outside: polygon(0 0, 0 150px, 16px 154px, 30px 166px, 30px 314px, 16px 326px, 0 330px, 0 0);
transition: shape-outside .15s;
}
.liuhai {
width: 24px; height: 180px;
background: url(liu.png) no-repeat left center;
position: absolute;
margin-top: 150px;
}
.content ul {
list-style: none;
padding: 0;
margin: 0;
}
.content li {
border-bottom: 1px solid #eee;
padding: .5em;
}
HTML代码:
<div id="box" class="box">
<i id="shape" class="shape"></i>
<i class="liuhai"></i>
<div class="content">
<ul>
<li>为了防止看花眼</li>
<li>我就手动敲下面的文字</li>
<li>原本我偷懒</li>
...
<li>理论上还可以使用CSS region实现</li>
<li>但没有这个方法容易理解</li>
</ul>
</div>
</div>
JS代码:
var eleShape = document.getElementById('shape');
var eleBox = document.getElementById('box');
// 保证shape元素高度足够
eleShape.style.height = eleBox.scrollHeight + 'px'; var funShape = function () {
var scrollTop = eleBox.scrollTop;
// 滚动偏移应用在shape-outside上
var shapeOutside = 'polygon(0 0, 0 '+ (150 + scrollTop) +'px, 16px '+ (154 + scrollTop) +'px, 30px '+ (166 + scrollTop) +'px, 30px '+ (314 + scrollTop) +'px, 16px '+ (326 + scrollTop) +'px, 0 '+ (330 + scrollTop) +'px, 0 0)';
eleShape.style.shapeOutside = shapeOutside;
};
// 滚动时候实时改变shape形状
eleBox.addEventListener('scroll', funShape);
funShape();

最新文章

  1. 继续Get News List
  2. 下载android 源码
  3. C# 基础(4)
  4. OpenGL(四)——有用的函数
  5. drupal 自定义表单调用autocomplete主标签实现方法
  6. go 使用模板函数的例子
  7. &amp;&amp;和||的那点事儿
  8. C#中out的用法
  9. Spring EL regular expression example
  10. Bootstrap V3使用Tab标签
  11. 【转】Perl Unicode全攻略
  12. QGraphicsTextItem中的文字对齐
  13. Duanxx的C++得知:计算位数
  14. Android学习路径——Android的四个组成部分activity(一)
  15. 总结的OSM 地图相关的分析
  16. JavaScript数组基础及实例
  17. Socket编程实践(1) --TCP/IP简述
  18. vivado中如何使用chipscope
  19. Holer下载
  20. ios外部链接或者app唤起自己的app

热门文章

  1. Docker从0开始之部署一套2048小游戏
  2. maven:打包时报错,报&rsquo;找不到符号&rsquo;
  3. Thread Synchronization Queue with Boost
  4. Android apk互调
  5. JAVA中获取键盘输入的方法总结
  6. Ex 2_34 线性3SAT..._第四次作业
  7. git reset --hard xxxxxxx
  8. react native 打包Ignoring return value of function declared with warn_unused_result attribute
  9. 复习os模块常用的一些操作
  10. ActiveMQ消息的持久化策略