Prechádzať zdrojové kódy

Utils: scroll-into-view should consider target element's offset parents (#11058)

杨奕 7 rokov pred
rodič
commit
ea70cf5a01

+ 1 - 1
build/deploy-ci.sh

@@ -36,7 +36,7 @@ if [ "$TRAVIS_TAG" ]; then
   # build site
   npm run deploy:build
   cd temp_web
-  git clone -b gh-pages https://$ROT_TOKEN@github.com/ElemeFE/element.git && cd element
+  git clone --depth 1 -b gh-pages --single-branch https://$ROT_TOKEN@github.com/ElemeFE/element.git && cd element
   # build sub folder
   echo $TRAVIS_TAG
 

+ 1 - 1
build/deploy-faas.sh

@@ -2,7 +2,7 @@
 mkdir temp_web
 npm run deploy:build
 cd temp_web
-git clone -b gh-pages https://github.com/ElemeFE/element.git && cd element
+git clone --depth 1 -b gh-pages --single-branch https://github.com/ElemeFE/element.git && cd element
 
 # build sub folder
 SUB_FOLDER='2.3'

+ 8 - 2
src/utils/scroll-into-view.js

@@ -8,8 +8,14 @@ export default function scrollIntoView(container, selected) {
     return;
   }
 
-  const top = selected.offsetTop;
-  const bottom = selected.offsetTop + selected.offsetHeight;
+  const offsetParents = [];
+  let pointer = selected.offsetParent;
+  while (pointer && container !== pointer && container.contains(pointer)) {
+    offsetParents.push(pointer);
+    pointer = pointer.offsetParent;
+  }
+  const top = selected.offsetTop + offsetParents.reduce((prev, curr) => (prev + curr.offsetTop), 0);
+  const bottom = top + selected.offsetHeight;
   const viewRectTop = container.scrollTop;
   const viewRectBottom = viewRectTop + container.clientHeight;