select.html 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. {extend name='admin@index/index'}
  2. {block name='style'}
  3. <style>
  4. body{min-width:500px}
  5. .news-container{position:relative}
  6. .news-container .news-item{top:0;left:0;width:232px;margin:10px;padding:5px;cursor:pointer;position:relative;border:1px solid #ccc;box-sizing:content-box}
  7. .news-container .news-item.active,.news-container .news-item:hover{border-color:#09c;box-shadow:1px 0 10px #09c}
  8. .news-container .news-item .news-articel-item{width:100%;height:150px;overflow:hidden;position:relative;background-size:100%;background-position:center center}
  9. .news-container .news-item .news-articel-item p{bottom:0;width:100%;color:#fff;padding:5px;max-height:5em;font-size:12px;overflow:hidden;position:absolute;text-overflow:ellipsis;background:rgba(0,0,0,.7)}
  10. .news-container .news-item .news-articel-item.other{height:50px;padding:5px 0}
  11. .news-container .news-item .news-articel-item .left-image{width:50px;height:50px;float:left;overflow:hidden;position:relative;background-size:100%;background-position:center center}
  12. .news-container .news-item .news-articel-item .right-text{float:left;width:172px;overflow:hidden;padding-right:10px;text-overflow:ellipsis}
  13. .news-container .news-item .hr-line-dashed:last-child{display:none}
  14. .news-container .hr-line-dashed{margin:6px 0 1px 0}
  15. .page-style{bottom:0;width:100%;height:50px;padding:0 10px;position:fixed;background:#fff}
  16. .page-style .pagination,.page-style .pagination-trigger{margin:10px 0!important;padding:0 10px!important}
  17. </style>
  18. {/block}
  19. {block name="body"}
  20. <div class="layui-clear news-container layui-hide">
  21. {foreach $list as $vo}
  22. <div class="news-item" data-news-id="{$vo.id}">
  23. {foreach $vo.articles as $k => $v}
  24. {if $k < 1}
  25. <div class='news-articel-item' style='background-image:url("{$v.local_url}")'>
  26. {if $v.title}<p>{$v.title}</p>{/if}
  27. </div>
  28. <div class="hr-line-dashed"></div>
  29. {else}
  30. <div class='news-articel-item other'>
  31. <div class='right-text'>{$v.title}</div>
  32. <div class='left-image' style='background-image:url("{$v.local_url}");'></div>
  33. </div>
  34. <div class="hr-line-dashed"></div>
  35. {/if}
  36. {/foreach}
  37. </div>
  38. {/foreach}
  39. {if empty($list)}<p class="notdata">没有记录哦!</p>{/if}
  40. </div>
  41. <div class="margin-bottom-20 margin-top-20"></div>
  42. <div class="page-style">{if isset($pagehtml)}{$pagehtml|raw}{/if}</div>
  43. {/block}
  44. {block name="script"}
  45. <script>
  46. require(['jquery.masonry'], function (Masonry) {
  47. $('.news-container.layui-hide').removeClass('layui-hide');
  48. var msnry = new Masonry($('.news-container').get(0), {itemSelector: '.news-item', columnWidth: 0});
  49. msnry.layout();
  50. // 事件处理
  51. $('.news-item').on('mouseenter', '.news-container', function () {
  52. $(this).addClass('active');
  53. }).on('mouseleave', '.news-container', function () {
  54. $(this).removeClass('active');
  55. });
  56. // 外部选择器
  57. var seletor = '[name="{$Think.get.field|decode|default=0}"]';
  58. if (seletor) {
  59. $('[data-news-id]').on('click', function () {
  60. window.top.$(seletor).val($(this).attr('data-news-id')).trigger('change');
  61. parent.layer.close(parent.layer.getFrameIndex(window.name))
  62. });
  63. }
  64. // 分页事件处理
  65. $('body').off('change', '.pagination-trigger select').on('change', '.pagination-trigger select', function () {
  66. var urls = this.options[this.selectedIndex].getAttribute('data-url').split('#');
  67. urls.shift();
  68. window.location.href = urls.join('#');
  69. }).off('click', '[data-open]').on('click', '[data-open]', function () {
  70. window.location.href = this.getAttribute('data-open');
  71. });
  72. });
  73. </script>
  74. {/block}