Svelte - 如何使数组 forEach 方法对 <svelte:window> 绑定有反应?
Svelte - How to make array forEach method reactive to <svelte:window> bindings?
我有这个 Svelte 代码,它基本上从数据库中获取 html 文本,并针对每个工具提示检查右侧是否有溢出,如果有,代码会将工具提示翻转到左侧.
苗条 REPL.
<script>
import {onMount} from 'svelte'
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
let windowscrollX;
onMount(() => {
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach(element => {
let tooltip = element.getBoundingClientRect();
let offset = tooltip.left + windowscrollX;
let width = tooltip.width;
let smaller = (offset + width <= windowInnerWidthy);
if (!smaller) {
element.classList.add('edge');
} else {
element.classList.remove('edge');
}
});
});
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} bind:scrollX={windowscrollX}/>
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item)
{
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag)
{
padding-right: 6px;
}
:global(alinea:first-of-type)
{
display: inline
}
:global(doctitle, ti, ti\.art, sti, sti\.art)
{
text-align: center;
}
:global(note)
{
display: inline-block;
position: relative;
}
:global(note:not(.under) parg)
{
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 5px;
border-radius: 6px;
z-index: 1;
width: 50vw;
top: 50%;
}
:global(.edge)
{
right: 0;
}
:global(note::before)
{
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg)
{
visibility: visible;
}
:global(quot\.s)
{
background: #ffe574;
display: inline-block;
}
</style>
使用 onMount() 效果很好。目标是让它对用户调整 window 的大小做出交互式反应,而不仅仅是组件的 onMount。但我不知道如何使用 forEach 方法实现这种反应行为。
到目前为止,这是我的代码:
苗条 REPL.
<script>
import {onMount} from 'svelte'
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
let windowscrollX;
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach(element => {
let tooltip = element.getBoundingClientRect();
let offset = tooltip.left + windowscrollX;
let width = tooltip.width;
let smaller = (offset + width <= windowInnerWidthy);
if (!smaller) {
element.classList.add('edge');
} else {
element.classList.remove('edge');
}
});
tooltips = tooltips;
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} bind:scrollX={windowscrollX}/>
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item)
{
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag)
{
padding-right: 6px;
}
:global(alinea:first-of-type)
{
display: inline
}
:global(doctitle, ti, ti\.art, sti, sti\.art)
{
text-align: center;
}
:global(note)
{
display: inline-block;
position: relative;
}
:global(note:not(.under) parg)
{
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 5px;
border-radius: 6px;
z-index: 1;
width: 50vw;
top: 50%;
}
:global(.edge)
{
right: 0;
}
:global(note::before)
{
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg)
{
visibility: visible;
}
:global(quot\.s)
{
background: #ffe574;
display: inline-block;
}
</style>
而不是 onMount
你可以在一个函数中创建它并响应地调用它:
function calculateTooltips() {
// code goes here
}
// this line will be called everytime windowInnerWidthy changes
$: windowInnerWidthy, calculateTooltips();
所以这似乎是一个有效的代码。我还添加了去抖动以对其进行一些优化。
苗条REPL
<script>
import { onMount } from "svelte";
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
const debounce = (func, delay) => {
let timer;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(() => func.apply(context, args), delay);
};
};
function calculateTooltips() {
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach((element, i) => {
let rect = element.getBoundingClientRect();
let rectParent = element.parentElement.getBoundingClientRect();
let tooltipLeft = rectParent.left + rectParent.width;
let tooltiWidth = rect.width;
let tooltipFromRightToEnd = tooltipLeft + tooltiWidth;
let overflow = tooltipFromRightToEnd + 60 > windowInnerWidthy;
if (overflow) {
element.classList.add("flip");
} else {
element.classList.remove("flip");
}
});
tooltips = tooltips;
}
const debouncedcalculateTooltips = debounce(calculateTooltips, 300);
onMount(() => {
calculateTooltips();
window.addEventListener("resize", debouncedcalculateTooltips);
return () => {
window.removeEventListener("resize", debouncedcalculateTooltips);
};
});
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} />
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item) {
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag) {
padding-right: 6px;
}
:global(alinea:first-of-type) {
display: inline;
}
:global(doctitle, ti, ti\.art, sti, sti\.art) {
text-align: center;
}
:global(note) {
display: inline-block;
position: relative;
}
:global(note:not(.under) parg) {
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 10px;
border-radius: 6px;
z-index: 1;
width: 40vw;
top: 50%;
}
:global(.flip) {
right: 0;
}
:global(note::before) {
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg) {
visibility: visible;
}
:global(quot\.s) {
background: #fff8d7;
display: inline-block;
}
</style>
我有这个 Svelte 代码,它基本上从数据库中获取 html 文本,并针对每个工具提示检查右侧是否有溢出,如果有,代码会将工具提示翻转到左侧.
苗条 REPL.
<script>
import {onMount} from 'svelte'
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
let windowscrollX;
onMount(() => {
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach(element => {
let tooltip = element.getBoundingClientRect();
let offset = tooltip.left + windowscrollX;
let width = tooltip.width;
let smaller = (offset + width <= windowInnerWidthy);
if (!smaller) {
element.classList.add('edge');
} else {
element.classList.remove('edge');
}
});
});
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} bind:scrollX={windowscrollX}/>
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item)
{
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag)
{
padding-right: 6px;
}
:global(alinea:first-of-type)
{
display: inline
}
:global(doctitle, ti, ti\.art, sti, sti\.art)
{
text-align: center;
}
:global(note)
{
display: inline-block;
position: relative;
}
:global(note:not(.under) parg)
{
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 5px;
border-radius: 6px;
z-index: 1;
width: 50vw;
top: 50%;
}
:global(.edge)
{
right: 0;
}
:global(note::before)
{
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg)
{
visibility: visible;
}
:global(quot\.s)
{
background: #ffe574;
display: inline-block;
}
</style>
使用 onMount() 效果很好。目标是让它对用户调整 window 的大小做出交互式反应,而不仅仅是组件的 onMount。但我不知道如何使用 forEach 方法实现这种反应行为。 到目前为止,这是我的代码:
苗条 REPL.
<script>
import {onMount} from 'svelte'
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
let windowscrollX;
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach(element => {
let tooltip = element.getBoundingClientRect();
let offset = tooltip.left + windowscrollX;
let width = tooltip.width;
let smaller = (offset + width <= windowInnerWidthy);
if (!smaller) {
element.classList.add('edge');
} else {
element.classList.remove('edge');
}
});
tooltips = tooltips;
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} bind:scrollX={windowscrollX}/>
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item)
{
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag)
{
padding-right: 6px;
}
:global(alinea:first-of-type)
{
display: inline
}
:global(doctitle, ti, ti\.art, sti, sti\.art)
{
text-align: center;
}
:global(note)
{
display: inline-block;
position: relative;
}
:global(note:not(.under) parg)
{
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 5px;
border-radius: 6px;
z-index: 1;
width: 50vw;
top: 50%;
}
:global(.edge)
{
right: 0;
}
:global(note::before)
{
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg)
{
visibility: visible;
}
:global(quot\.s)
{
background: #ffe574;
display: inline-block;
}
</style>
而不是 onMount
你可以在一个函数中创建它并响应地调用它:
function calculateTooltips() {
// code goes here
}
// this line will be called everytime windowInnerWidthy changes
$: windowInnerWidthy, calculateTooltips();
所以这似乎是一个有效的代码。我还添加了去抖动以对其进行一些优化。
苗条REPL
<script>
import { onMount } from "svelte";
let newInnerHTML = `<article identifier="061">
<ti.art>Článek 61</ti.art>
<sti.art>Změna nařízení (EU) č. 1093/2010</sti.art>
<alinea>
<parg>V čl. 4 bodu 2 nařízení (EU) č. 1093/2010 se doplňuje nový podbod, který zní:</parg>
<quot.s level="1">
<list type="OTHER">
<item>
<np>
<no.p>
<quotstart>"</quotstart>
viii)
</no.p>
<txt>
pokud jde o nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0028" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
a směrnici Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0029" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
, příslušné orgány ve smyslu čl. 3 odst. 1 bodu 5 uvedené směrnice.
</txt>
</np>
</item>
</list>
<div>----------------------</div>
<note note.id="E0028" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1 ).
</parg>
</note>
<note note.id="E0029" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>
<article identifier="064">
<ti.art>Článek 64</ti.art>
<sti.art>Změny nařízení (EU) č. 806/2014</sti.art>
<alinea>
<parg>
V článku 12a nařízení Evropského parlamentu a Rady (EU) č. 806/2014
<note note.id="E0038" numbering="ARAB" numbering.continued="YES" type="FOOTNOTE">
<parg>
Nařízení Evropského parlamentu a Rady (EU) č. 806/2014 ze dne
<date iso="20140715">15. července 2014</date>
, kterým se stanoví jednotná pravidla a jednotný postup pro řešení krize úvěrových institucí a některých investičních podniků v rámci jednotného mechanismu pro řešení krizí a Jednotného fondu pro řešení krizí a mění nařízení (EU) č. 1093/2010 (
<ref.doc.oj coll="L" date.pub="20140730" no.oj="225" page.first="1">Úř. věst. L 225, 30.7.2014, s. 1</ref.doc.oj>
).
</parg>
</note>
se doplňuje nový odstavec, který zní:
</parg>
<quot.s level="1">
<parag identifier="012A.003">
<no.parag>
<quotstart>"</quotstart>
3.
</no.parag>
<alinea>
<parg>
Pokud jde o požadavky na kapitál na individuálním základě investičních podniků uvedených v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2033, jsou v souladu s článkem 65 nařízení Evropského parlamentu a Rady (EU) 2019/2033
<note note.id="E0039" numbering="STAR" type="QUOTATION">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
v tomto nařízení odkazy na článek 92 nařízení (EU) č. 575/2013 chápány takto:
</parg>
<list type="alpha">
<item>
<np>
<no.p>a)</no.p>
<txt>odkazy na čl. 92 odst. 1 písm. c) nařízení (EU) č. 575/2013, pokud jde o požadavek na celkový kapitálový poměr, v tomto nařízení se považují za odkazy na čl. 11 odst. 1 nařízení (EU) 2019/2033;</txt>
</np>
</item>
<item>
<np>
<no.p>b)</no.p>
<txt>odkazy na čl. 92 odst. 3 nařízení (EU) č. 575/2013, pokud jde o celkový objem rizikové expozice, v tomto nařízení se považují za odkazy na příslušný požadavek podle čl. 11 odst. 1 nařízení (EU) 2019/2033 vynásobený koeficientem 12,5.</txt>
</np>
</item>
</list>
</alinea>
<alinea>
Pokud jde o dodatečné kapitálové požadavky na investiční podniky uvedené v čl. 2 písm. c) tohoto nařízení, které nejsou investičními podniky uvedenými v čl. 1 odst. 2 nebo 5 nařízení (EU) 2019/2034, považují se v souladu s článkem 65 směrnice Evropského parlamentu a Rady (EU) 2019/2034
<note note.id="E0040" numbering="STAR" type="QUOTATION">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
v tomto nařízení odkazy na článek 104a směrnice 2013/36/EU za odkazy na článek 40 směrnice (EU) 2019/2034.
</alinea>
</parag>
<div>----------------------</div>
<note note.id="E0039" numbering="STAR" type="QUOTATION" class="under">
<parg>
Nařízení Evropského parlamentu a Rady (EU) 2019/2033 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostních požadavcích na investiční podniky a o změně nařízení (EU) č. 1093/2010 (EU) č. 575/2013, (EU) č. 600/2014 a (EU) č. 806/2014 (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 1).
</parg>
</note>
<note note.id="E0040" numbering="STAR" type="QUOTATION" class="under">
<parg>
Směrnice Evropského parlamentu a Rady (EU) 2019/2034 ze dne
<date iso="20191127">27. listopadu 2019</date>
o obezřetnostním dohledu nad investičními podniky a o změně směrnic 2002/87/ES, 2009/65/ES, 2011/61/ES, 2013/36/EU, 2014/59/EU a 2014/65/EU (Úř. věst. L 314,
<date iso="20191205">5.12.2019</date>
, s. 64).
<quotend>"</quotend>
</parg>
</note>
</quot.s>
</alinea>
</article>`;
let windowInnerWidthy;
const debounce = (func, delay) => {
let timer;
return function () {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(() => func.apply(context, args), delay);
};
};
function calculateTooltips() {
let tooltips = document.querySelectorAll("note:not(.under) parg");
tooltips.forEach((element, i) => {
let rect = element.getBoundingClientRect();
let rectParent = element.parentElement.getBoundingClientRect();
let tooltipLeft = rectParent.left + rectParent.width;
let tooltiWidth = rect.width;
let tooltipFromRightToEnd = tooltipLeft + tooltiWidth;
let overflow = tooltipFromRightToEnd + 60 > windowInnerWidthy;
if (overflow) {
element.classList.add("flip");
} else {
element.classList.remove("flip");
}
});
tooltips = tooltips;
}
const debouncedcalculateTooltips = debounce(calculateTooltips, 300);
onMount(() => {
calculateTooltips();
window.addEventListener("resize", debouncedcalculateTooltips);
return () => {
window.removeEventListener("resize", debouncedcalculateTooltips);
};
});
</script>
<svelte:window bind:innerWidth={windowInnerWidthy} />
<container>
{@html newInnerHTML}
</container>
<style>
:global(ti, preamble\.init, visa, sti, gr\.consid\.init, consid, article, ti\.art, sti\.art, parag, alinea, item) {
display: block;
padding-top: 5px;
padding-bottom: 5px;
}
:global(no\.p, no\.parag) {
padding-right: 6px;
}
:global(alinea:first-of-type) {
display: inline;
}
:global(doctitle, ti, ti\.art, sti, sti\.art) {
text-align: center;
}
:global(note) {
display: inline-block;
position: relative;
}
:global(note:not(.under) parg) {
visibility: hidden;
position: absolute;
background-color: black;
color: #fff;
padding: 5px 10px;
border-radius: 6px;
z-index: 1;
width: 40vw;
top: 50%;
}
:global(.flip) {
right: 0;
}
:global(note::before) {
content: attr(note\.id);
font-size: x-small;
vertical-align: top;
color: blue;
padding-left: 6px;
}
:global(note:hover parg) {
visibility: visible;
}
:global(quot\.s) {
background: #fff8d7;
display: inline-block;
}
</style>