snapToBaseline
This commit is contained in:
parent
299ffe6c4b
commit
831d276d41
6 changed files with 24 additions and 15 deletions
|
|
@ -3,10 +3,29 @@ import { Handler } from '/csspageweaver/lib/paged.esm.js';
|
|||
export default class snapToBaseline extends Handler {
|
||||
constructor(chunker, polisher, caller) {
|
||||
super(chunker, polisher, caller);
|
||||
this.baseline;
|
||||
}
|
||||
|
||||
beforeParsed(content){
|
||||
this.baseline = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--baseline').trim());
|
||||
// console.log("========================================");
|
||||
// console.log("baseline = " + this.baseline);
|
||||
}
|
||||
|
||||
renderNode(node, sourceNode){
|
||||
if (node.nodeName === 'P') {
|
||||
this.baseline = parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--baseline').trim());
|
||||
const area = node.closest('.pagedjs_area');
|
||||
if (area) {
|
||||
const areaRect = area.getBoundingClientRect();
|
||||
const nodeRect = node.getBoundingClientRect();
|
||||
const relativeTop = nodeRect.top - areaRect.top;
|
||||
const modulo = relativeTop % this.baseline;
|
||||
if (modulo !== 0) {
|
||||
let newPadding = this.baseline - modulo;
|
||||
node.style.paddingTop = newPadding + 'px';
|
||||
}
|
||||
}
|
||||
return node;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue