Einführung in die Feinabstimmung der Quellcodekompatibilität des Laui-Frameworks

Freigeben: 2019-11-23 12:02:11
nach vorne
2422 Leute haben es durchsucht

Layui bietet eine Fülle integrierter Module, die alle bei Bedarf modular geladen werden können. Dieses Tutorial bietet Ihnen eine Einführung in die Feinabstimmung der Quellcode-Kompatibilität des Layui-Frameworks Lösen Sie die Probleme, die bei der Verwendung des Layui-Frameworks auftreten.

Einführung in die Feinabstimmung der Quellcodekompatibilität des Laui-Frameworks

table.js

1. Beschreibung: [Alle Browser] Das Ladesymbol ist statisch und möchte animiert werden.

Lösung: Suchen Sie jedes „layui-icon-loading“ und fügen Sie „layui-animlayui-anim-rotatelayui-anim-loop“ hinzu

2. Beschreibung: [Firefox und IE10+] Wenn Wenn die Zelle aus reinem Text besteht, muss die Anzahl der ausgelassenen Wörter am Ende mehr als 3 Zeichen betragen, bevor das Popup-Fenster „layer.tips“ geöffnet wird.

Lösung: Da „scrollWidth“ intern verwendet wird, unterscheidet sich seine Leistung in diesen beiden Programmen von der von Google.

Berechnen Sie nun die Pixel, indem Sie die interne Textlänge berechnen

// 源码 table.js 1600 左右开始
var othis = $(this)
,elemCell = othis.children(ELEM_CELL);
// m
var computedFontWidth = function() {
  var fontSize = parseFloat(elemCell.css('font-size'))
  var text = elemCell.text()
  var width = 0, i = 0, len = text.length
  while ( i < len) {
    // 基础像素,我的是 14px,不知道可以看 html 或者 body 内的字体大小设置。
    // 火狐和IE中字体的长度就是双字节文字按基础像素计算,单字节文字接触像素/2。
    // 谷歌比较另类,双字节文字按基础像素计算,单字节是基础像素/2与 16/2 的差值,
    // 不知道是不是我想复杂了,所以用 +1,微调下浏览器的差异
    width += text.charAt(i).match(/[^\x00-\xff]/ig) != null ? fontSize : (fontSize / 2 + 1)
    i++
   }
  return width
}

var computedScrollWidth = function() {
  var hasChildren = elemCell.children().length > 0
  var originScrollWidth = elemCell.prop(&#39;scrollWidth&#39;)
  var realScrollWidth = hasChildren 
    ? 0
    : (computedFontWidth() + parseFloat(elemCell.css(&#39;padding-left&#39;)) + parseFloat(elemCell.css(&#39;padding-right&#39;)))
  // 这里比较大小值,为了对于原来非纯文本还是采用 layui 原本的方式
  return Math.max(originScrollWidth, realScrollWidth)
}

if(hide){
  othis.find(&#39;.layui-table-grid-down&#39;).remove();
// } else if(elemCell.prop(&#39;scrollWidth&#39;) > elemCell.outerWidth()){ // 注释掉原本的代码
} else if(computedScrollWidth() > elemCell.outerWidth()){
  if(elemCell.find(&#39;.&#39;+ ELEM_GRID_DOWN)[0]) return;
  othis.append(&#39;<div class="&#39;+ ELEM_GRID_DOWN +&#39;"><i class="layui-icon layui-icon-down"></i></div>&#39;);
}
Nach dem Login kopieren

form.js

1. Beschreibung: [Alle Browser] Positionierung von select, wenn select im Projekt ist Ganz rechts, in der unteren rechten Ecke, wird durch Klicken eine Bildlaufleiste auf der nicht scrollbaren Seite angezeigt

Lösung:

// 修改部分定位写法
var showDown = function(){
  // 将样式复位
  dl.css({
    top: &#39;&#39;,
    left: &#39;&#39;,
    right: &#39;&#39;
  })
  var top = reElem.offset().top + reElem.outerHeight() + 5 - $win.scrollTop()
  ,dlHeight = dl.outerHeight(), dlWidth = dl.outerWidth(), winWidth = $(window).width();
 
  index = select[0].selectedIndex; //获取最新的 selectedIndex

   // 判断是否在最右边的临界点
  if (dlWidth + reElem.offset().left > winWidth) {
    dl.css({
      left: &#39;auto&#39;,
      right: 0
    })
  }
  reElem.addClass(CLASS+&#39;ed&#39;);
  dds.removeClass(HIDE);
  nearElem = null;
  
  //初始选中样式
  dds.eq(index).addClass(THIS).siblings().removeClass(THIS);

  //上下定位识别
  if(top + dlHeight > $win.height() && top >= dlHeight){
    reElem.addClass(CLASS + &#39;up&#39;);
  } else {
    // 定位重写定义
  
    // 动画需要的距离和弹窗的间隔,这是根据 layui 的样式来的,理论应该计算
    var ANIM_UP = 30, SPACE = 5; 
    var reElemBottom = reElem.get(0).getBoundingClientRect().bottom;
    var dlTop = parseInt(dl.css(&#39;top&#39;));
    var winHeight = $win.height();
    if (reElemBottom + dlHeight + ANIM_UP > winHeight ) {
      var computeValue = dlTop - (reElemBottom + SPACE - (winHeight - dlHeight - ANIM_UP))
      dl.css(&#39;top&#39;, computeValue)
    }
  }
  followScroll();
}
Nach dem Login kopieren

tree.js

Beschreibung : Ich verwende die Laui2.4.5-Version, die interne Baumfunktion wurde erfüllt, aber aufgrund des Symbolproblems verstecke ich sie einfach hier

Lösung:

// 第一处修改
Tree.prototype.tree = function() {
   // 大概在 line 48
   var li = $([&#39;<li &#39;+ (hasChild ? " is-branch " : " is-leaf ") + (item.spread ? &#39;data-spread="&#39;+ item.spread +&#39;"&#39; : &#39;&#39;) +&#39;>&#39;
}

// 第二处修改

// 大概在 72 - 76 注释掉

/*+ (&#39;<i class="layui-icon layui-tree-&#39;+ (hasChild ? "branch" : "leaf") +&#39;">&#39;+ (
         hasChild ? ( item.spread ? icon.branch[1] : icon.branch[0]) : icon.leaf) +&#39;</i>&#39;) */ //节点图标
Nach dem Login kopieren

Für mehr Laui-Framework-Kenntnisse: Bitte beachten Sie das Layui-Framework-Tutorial.

Das obige ist der detaillierte Inhalt vonEinführung in die Feinabstimmung der Quellcodekompatibilität des Laui-Frameworks. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:layui.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!