Сделать блок кликабельным через сss

155
21 февраля 2021, 22:50

Есть код при наведении на объект появляется поле. Как сделать так что бы поле появлялось при клике и не исчезало пока не кликнешь второй раз.

<tbody>
    <?php 
        $fday=$params->get('firstday');
        for($i = 0; $i < count($cal->weeks); $i++)
        { 
        ?><tr class="week<?php echo $i+1; ?>">
            <?php
            for($j=0; $j < 7; $j++) 
            {
                if(!empty($cal->weeks[$i][$j])) 
                {
                    $day = explode(' ',$cal->weeks[$i][$j]);
                    $class = 'nc-day';  
                    $ul = '';               
                    if ( $day[1] ) { 
                        $class .= " outofmonth";
                    } else {
                        $class .= " weekday".((($j+$fday)>6)?(($j+$fday)-6):($j+$fday+1)) . " relday" . ($j+1); 
                        if ($day[0]==date('j') && $cal->curmonth==date('m')) {
                            $class .= " today"; 
                        }
                    }
                    if (isset($cal->items[$day[0]]) && !$day[1]) {
                        $class .= " hasitems";  
                    }
                    ?><td><span class="<?php echo $class; ?>"><?php 
                        echo $day[0];
                        if (isset($cal->items[$day[0]]) && !$day[1]) { ?>
                        <ul class="nc-items"><?php
                        foreach ($cal->items[$day[0]] as $item) { ?> 
                            <li><a href="<?php echo preg_replace('/modules\/mod_newscalendar\/assets\//', '', $item->link); ?>"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> <?php echo $item->title; ?></a></li><?php }
                        ?></ul>
                    <?php } 
                   ?></span></td>
                <?php } else { ?>
                <td></td><?php
                }
            } ?>
            </tr>
    <?php } ?>
    </tbody>

Блок который появляется при наведении на объект:

<ul class="nc-items"><?php
                        foreach ($cal->items[$day[0]] as $item) { ?> 
                            <li><a href="<?php echo preg_replace('/modules\/mod_newscalendar\/assets\//', '', $item->link); ?>"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> <?php echo $item->title; ?></a></li><?php }
                        ?></ul>

Объект на который надо кликать:

<td><span class="<?php echo $class; ?>"><?php 
                        echo $day[0];
                        if (isset($cal->items[$day[0]]) && !$day[1]) { ?>
                        <ul class="nc-items"><?php
                        foreach ($cal->items[$day[0]] as $item) { ?> 
                            <li><a href="<?php echo preg_replace('/modules\/mod_newscalendar\/assets\//', '', $item->link); ?>"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> <?php echo $item->title; ?></a></li><?php }
                        ?></ul>
                    <?php } 
                   ?></span></td>
                <?php } else { ?>
                <td>
Answer 1

CSS

.test { 
    position: relative; 
} 
.test:focus .test-inner { 
    display: block; 
} 
 
.test-inner { 
    position: absolute; 
    display: none; 
}
<tbody> 
		<?php  
            $fday=$params->get('firstday'); 
            for($i = 0; $i < count($cal->weeks); $i++) 
            {  
            ?><tr class="week<?php echo $i+1; ?>"> 
				<?php 
                for($j=0; $j < 7; $j++)	 
                { 
                    if(!empty($cal->weeks[$i][$j]))  
                    { 
                        $day = explode(' ',$cal->weeks[$i][$j]); 
                        $class = 'nc-day';	 
                        $ul = '';				 
                        if ( $day[1] ) {  
                            $class .= " outofmonth"; 
                        } else { 
                            $class .= " weekday".((($j+$fday)>6)?(($j+$fday)-6):($j+$fday+1)) . " relday" . ($j+1);	 
                            if ($day[0]==date('j') && $cal->curmonth==date('m')) { 
                                $class .= " today";	 
                            } 
                        } 
                        if (isset($cal->items[$day[0]]) && !$day[1]) { 
                            $class .= " hasitems";	 
                        } 
                        ?><td class="test" tabindex="-1"><span class="<?php echo $class; ?>"><?php  
							echo $day[0]; 
                        	if (isset($cal->items[$day[0]]) && !$day[1]) { ?> 
                             
                            <ul class="nc-items test-inner"><?php 
							 
                            foreach ($cal->items[$day[0]] as $item) { ?>  
                                <li><a href="<?php echo preg_replace('/modules\/mod_newscalendar\/assets\//', '', $item->link); ?>"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> <?php echo $item->title; ?></a></li><?php } 
                            ?></ul> 
                        <?php }  
                       ?></span></td> 
                    <?php } else { ?> 
                    <td></td><?php 
                    } 
                } ?> 
                </tr> 
		<?php } ?> 
             
        </tbody>

READ ALSO
Создать внешний ключ

Создать внешний ключ

Не понимаю в чём может быть проблемаЕсть две таблицы

146
Как создать MockMultipartFile в нужной директории?

Как создать MockMultipartFile в нужной директории?

Для тестирования контроллеров использую

148
сохранить фото после вызова imageIntent

сохранить фото после вызова imageIntent

Учусь использовать камеру в Android studio, научился запускать камеру и отображать миниатюру, а вот сохранить фото не получается, перепробовал...

113